我是初学者,用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中显示值?
请帮帮我!
提前致谢!
答案 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");
但是,您的值将在网址中显示,这可能不切实际。在页面请求之间有许多其他的传递值的方法,都有它们的优点和缺点。