Send parameter to another ASP.Net page

11,226

Solution 1

Aside from the fact that you cannot just put "p1" in a string and have it reference a class instance, you cannot just add an object as a query argument.

You will need to add arguments to the URL for each element of Point. For example:

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

Alternatively, you could use Session if you don't need it as a query argument.

Solution 2

You'll want to use the Session instead of the QueryString

Session["myPoint"] = p1;

And then on page2.aspx

p2 = (Point)Session["myPoint"]

Solution 3

No, you cannot directly pass an object as querystring. impossible.

There are three ways you can pass data between two aspx pages

1) using Response.Redirect() / Server.Transfer()

2) using session

3) using public properties

here i have defined example for each of them

1) using Server.Transfer()

source page 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>

code behind

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";
        }
    }
}

destination page

<%@ 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>

code behind

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() and sessions has been explained by two bro's here, for me no need to discuss regarding about that. it's clearly explained there

3) using properties

source page

<%@ 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>

code behind

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");
    }
}

destination page

<%@ 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>

code behind

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;

    }
}
Share:
11,226

Related videos on Youtube

Or K
Author by

Or K

Updated on October 20, 2022

Comments

  • Or K
    Or K over 1 year

    I have class in c# called "Point".

    public class Point(){
    .
    .
    }
    

    In page1.aspx I created:

    Point p1 = new Point();
    

    I want to send it to page2.aspx. I try to send with:

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

    And get it in page 2 with:

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

    It does not work. Can you help me please?