server.Transfer with query string

时间:2009-08-07 05:38:13

标签: asp.net

我是初学者,用C#作为编程语言学习ASP.NET。

目前我正在使用HTTPSERVERUTILITY。

我创建了一个名为Default.aspx和Default2.aspx的网络表单:

我写了以下代码:

Default.aspx的:

在源视图中

         

    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

</div>
</form>

在代码隐藏文件中:

protected void Button1_Click(object sender,EventArgs e)     {

    Server.Transfer("Default2.aspx ? name =roseline & password = pass@123");
}

Default2.aspx的编码:

在源视图中:

                           
        
                 
        
             
         

在代码隐藏文件中:

public string n, p;
protected void Page_Load(object sender, EventArgs e)
{
    n = Request.QueryString["name"];
    p = Request.QueryString["password"];

}
protected void Button1_Click(object sender, EventArgs e)
{
    TextBox1.Text = n;
    TextBox2.Text = p;
}

当我执行上述应用程序时,我没有收到任何错误。

当我点击Default.aspx中的Button1时,它会显示Default2.aspx,但是当我点击按钮时我没有得到TextBox中的值,TextBoxes是空的,没有任何值。

有谁能告诉我编码有什么问题?为什么它没有在TextBoxes中显示值?

请帮帮我!

提前致谢!

5 个答案:

答案 0 :(得分:9)

您无法在Server.Transfer中附加查询字符串。

您可以在Context

中传递值

例如:

Context.Items["ParamName"] = value;

您可以从here

获取Server.Transfer和Response.Redirect之间的差异

答案 1 :(得分:2)

尝试使用

Response.Redirect("default.aspx?name =roseline&password=pass@123");

代替。 有关Response.Redirect和Server.Transfer之间差异的更多信息,请参阅this页。

编辑:快速响应,Response.Redirect当然不使用HttpServerUtility类。但是我会说使用Response.Redirect是正常的方法。

答案 2 :(得分:2)

Source.aspx

protected void Button1_Click(object sender, EventArgs e)
    {
        HttpContext _context = HttpContext.Current;
        _context.Items.Add("name", roseline);
        _context.Items.Add("password", pass@123);
       Server.Transfer("Destination.aspx");
    }

Destination.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        HttpContext _context = HttpContext.Current;
        Response.Write(_context.Items["name"]);
        Response.Write(_context.Items["password"]);
     }

答案 3 :(得分:1)

你可以这样使用。

 string url = $"~/Registration.aspx?price={price}&membershipId={membershipId}";
 Server.Transfer(url);

要阅读这些值,您只需使用:

string membershipId = Request.QueryString["membershipId"];

答案 4 :(得分:0)

改为使用Response.Redirect:

 Response.Redirect("Default2.aspx?name=roseline&password=pass@123");

但是,您的值将在网址中显示,这可能不切实际。在页面请求之间有许多其他的传递值的方法,都有它们的优点和缺点。