2013-12-19 18 views
2

我在c#中有一個名爲「Point」的類。發送參數到另一個ASP.Net頁面

public class Point(){ 
. 
. 
} 

page1.aspx這個我創建:

Point p1 = new Point(); 

我想將它發送到page2.aspx。 我嘗試使用派:

Response.Redirect("~/page2.aspx?x=p1"); 

,並得到它在2頁面:

Point p2 =Request.QueryString["x"]; 

它不工作。你能幫我嗎?

+0

Point有哪些屬性?需要傳輸什麼信息 –

+0

您無法在查詢字符串中傳遞對象。 – afzalulh

回答

3

你要使用的Session,而不是查詢字符串

Session["myPoint"] = p1; 

,然後page2.aspx

p2 = (Point)Session["myPoint"] 
5

除了這個事實,你不能只是把「P1」在字符串並讓它引用一個類實例,你不能只是添加一個對象作爲查詢參數。

您需要爲每個元素Point的URL添加參數。例如:

Response.Redirect(String.Format("~/page2.aspx?x={0}&y={1}", p1.x, p1.y)); 

或者,你可以使用Session,如果你不需要它作爲查詢參數。

1

不,你不能直接傳遞一個對象作爲查詢字符串。不可能。

有三種方法可以使用的Response.Redirect()/ Server.Transfer的()兩個aspx頁面

1)之間傳遞數據使用利用公共會議

3)

2)屬性

這裏我對它們中的每限定例子

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")) 
     { 
      /* 
      * Passing data using QueryString. 
      */ 
      //Response.Redirect("Description.aspx?Username=&Password=" + s1 + " " + s2); 
      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) 
    { 
     //For Response.Redirect - do this 

     //string username = Request.QueryString["Username"]; 
     //string password = Request.QueryString["Password"]; 
     //lblResult.Text = "Username : " + " Password : " + password; 

     //Below is for Server.Transfer() 

     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()和會話代碼已被解釋由兩位兄​​弟在這裏編輯,因爲我不需要討論這件事。它清楚地解釋有

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; 
    /* 
    * Defining Properties in the source page to be Accessible on the destination page. 
    * means Exposing data to other pages using Properties 
    * To retrieve data from source page,Destination page must have 
    * <%@ PreviousPageType VirtualPath="~/Default.aspx" %> Directive added below <%@ Page %> Directive 

    */ 
    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> 
      &nbsp; 
      <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; 

    } 
} 
相關問題