不,你不能直接将对象作为查询字符串传递。这是不可能的。
有三种方法可以在两个aspx页面之间传递数据:
1)使用Response.Redirect() / Server.Transfer()
2)使用session
3)使用公共属性
下面我为每种方法定义了一个示例:
1) using Server.Transfer()
源页面 Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:Label ID="lblUsername" runat="server" BorderStyle="None" Font-Bold="True" Font-Names="Garamond"
Font-Size="Large" Style="z-index: 100; left: 240px; position: absolute; top: 32px"
Text="Username" Width="73px"></asp:Label>
<br />
<asp:Label ID="lblPassword" runat="server" BorderStyle="None" Font-Bold="True" Font-Names="Garamond"
Font-Size="Large" Style="z-index: 101; left: 237px; position: absolute; top: 80px"
Text="Password" Width="80px"></asp:Label>
<br />
<asp:TextBox ID="txtPassword" runat="server" Style="z-index: 102; left: 355px; position: absolute;
top: 80px" TextMode="Password" Width="151px"></asp:TextBox>
<asp:TextBox ID="txtUsername" runat="server" Style="z-index: 103; left: 357px; position: absolute;
top: 30px" Width="153px"></asp:TextBox>
<asp:Label ID="lblMessage" runat="server" Font-Bold="False" Font-Names="Bookman Old Style"
Font-Size="Medium" Style="z-index: 104; left: 354px; position: absolute; top: 130px"
Text="Message :"></asp:Label>
<asp:Button ID="btnSubmit" runat="server" Font-Bold="True" Font-Names="Garamond"
Font-Size="Large" OnClick="btnSubmit_Click" Style="z-index: 106; left: 289px;
position: absolute; top: 160px" Text="Submit" />
</div>
</div>
</form>
</body>
</html>
代码后台
using System;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
string s1, s2;
protected void btnSubmit_Click(object sender, EventArgs e)
{
s1 = txtUsername.Text;
s2 = txtPassword.Text;
if ((s1 == "sa") && (s2 == "123qwe"))
{
Server.Transfer("Description.aspx?Username=&Password=" + s1 + " " + s2);
}
else
{
lblMessage.Text = "Invalid Username and Password";
}
}
}
目标页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Description.aspx.cs" Inherits="Description" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblResult" runat="server" Font-Bold="True" Font-Names="Garamond" Font-Size="X-Large"
Height="22px" Style="z-index: 100; left: 307px; position: absolute; top: 19px"
Text="Result" Width="71px"></asp:Label>
</div>
</form>
</body>
</html>
代码后台
using System;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public partial class Description : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.PreviousPage != null)
{
TextBox SourceTextBox_1 =
(TextBox)Page.PreviousPage.FindControl("txtUsername");
TextBox SourceTextBox_2 =
(TextBox)Page.PreviousPage.FindControl("txtPassword");
if (SourceTextBox_1 != null)
{
lblResult.Text = SourceTextBox_1.Text + " " + SourceTextBox_2.Text ;
}
}
}
}
2) Response.Redirect()和sessions已经由两位兄弟解释过了,对我来说不需要再讨论了。它们在那里被清楚地解释了。
3) using properties
源页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:Label ID="lblUsername" runat="server" BorderStyle="None" Font-Bold="True" Font-Names="Garamond"
Font-Size="Large" Style="z-index: 100; left: 240px; position: absolute; top: 32px"
Text="Username" Width="73px"></asp:Label>
<br />
<asp:Label ID="lblPassword" runat="server" BorderStyle="None" Font-Bold="True" Font-Names="Garamond"
Font-Size="Large" Style="z-index: 101; left: 237px; position: absolute; top: 80px"
Text="Password" Width="80px"></asp:Label>
<br />
<asp:TextBox ID="txtPassword" runat="server" Style="z-index: 102; left: 355px; position: absolute;
top: 80px" TextMode="Password" Width="151px"></asp:TextBox>
<asp:TextBox ID="txtUsername" runat="server" Style="z-index: 103; left: 357px; position: absolute;
top: 30px" Width="153px"></asp:TextBox>
<asp:Label ID="lblMessage" runat="server" Font-Bold="False" Font-Names="Bookman Old Style"
Font-Size="Medium" Style="z-index: 104; left: 354px; position: absolute; top: 130px"
Text="Message :"></asp:Label>
<asp:Button ID="btnSubmit" runat="server" Font-Bold="True" Font-Names="Garamond"
Font-Size="Large" OnClick="btnSubmit_Click" Style="z-index: 106; left: 289px;
position: absolute; top: 160px" Text="Submit" />
</div>
</div>
</form>
</body>
</html>
代码后台
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
private string myUserName;
public string propUserName
{
get { return myUserName; }
set { myUserName = value; }
}
private string myPassword;
public string propPassword
{
get { return myPassword; }
set { myPassword = value; }
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
if ((txtUsername.Text == "chandan") && (txtPassword.Text == "niit"))
{
myUserName = txtUsername.Text;
myPassword = txtPassword.Text;
}
Server.Transfer("Description.aspx");
}
}
目标页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Description.aspx.cs" Inherits="Description" %>
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label2" runat="server" Text="Password" style="z-index: 100; left: 336px; position: absolute; top: 69px" Font-Bold="True" Font-Size="Larger"></asp:Label>
<asp:Label ID="Label1" runat="server" Text="UserName" style="z-index: 102; left: 333px; position: absolute; top: 28px" Font-Bold="True" Font-Size="Larger"></asp:Label>
</div>
</form>
</body>
</html>
代码后台
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Description : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = PreviousPage.propUserName;
Label2.Text = PreviousPage.propPassword;
}
}