如何通过按钮从一个ASP.NET页面重定向到另一个页面(“Webform2.aspx”)?
Response.Redirect()
将页面从一个页面重定向到另一个页面。设置按钮的PostBackUrl属性,例如:
button1.PostBackUrl= "Webform2.aspx";
Response.Redirect("Webform.aspx");
Response.Redirect
, Server.Transfer
, 以及调用Javascript。onclick="javascript:window.location.href = Webform2.aspx?id='<%=Request.QueryString["id"]%>'"
Server.Transfer
可以在服务器端进行重定向。也就是说,浏览器仍然会显示Webform1.aspx的内容,但请求会被重定向到Webform2,Webform2会返回响应。(Req = 1, Res = 1)
Response.Redirect
:Webform1会发送一个响应,要求浏览器发起一个新的请求到Webform2。在这种情况下,浏览器会更改URL,因为它正在发起对Webform2的新请求。(Req = 1 + 1, Res = 1+1)form.submit()
。如果您只想在单击按钮时加载新页面,个人建议使用客户端脚本来实现。
您可以使用JavaScript库(例如:jQuery)来实现:
jQuery
$(function() {
$('#<%= button1.ClientID %>').click(function() {
window.location.href = "Webform2.aspx";
});
});
ASP.NET
<asp:Button id="button1" runat="server"/>
Button.PostBackUrl
,它仍然使用客户端脚本,但意味着您不必自己编写代码。按钮的HTML呈现如下:<input type="submit" name="button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("button1", "", true, "", "webform2.aspx", false, false))" id="button1" />
Response.Redirect("Webform2.aspx");
。Response.Redirect(string url)
发出302 HTTP状态代码,指示客户端重定向到url
。浏览器将为url
发出新请求,并且地址栏中的URL将更改。
Server.Transfer(string path)
终止当前页面的执行,并在指定的path
内部启动新页面的执行,即在IIS内部。因此,浏览器地址栏中的URL不会更改。您要转移到的页面必须是同一网站中的aspx页面。
Response.Redirect
。如果URL正确且当前,但您需要仅此一次显示不同的内容-可能正在显示错误消息或需要用户输入其凭据以继续或存在其他原因导致内容应更改但URL不应更改,请使用Server.Transfer
。Click
事件处理程序中使用以上任意一种方法。protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Webform2.aspx");
// OR
Server.Transfer("Webform2.aspx");
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect("default2.aspx");
}
default2.aspx
是您的第二个网页名称,并且您需要保留它。Response.Redirect和Server.Transfer方法都用于将用户从一个Web页面转移到另一个Web页面。这两种方法用于相同的目的,但仍存在以下一些差异。
Response.Redirect方法重定向请求到新URL并指定新URL,而Server.Transfer方法用于当前请求,终止当前页面的执行,并使用指定页面的URL路径开始执行新页面。
Response.Redirect和Server.Transfer具有相同的语法,例如:
Response.Redirect("UserDetail.aspx"); Server.Transfer("UserDetail.aspx");
在深入探讨更多细节之前,我想先解释一些HTTP状态码,这对于理解这两者之间的基本区别非常重要。HTTP状态码是Web服务器用来与Web浏览器或用户代理通信的代码。 Response.Redirect向浏览器发送一个HTTP请求,然后浏览器将该请求发送到Web服务器,然后Web服务器向Web浏览器提供响应。例如,假设您正在网页“UserRegister.aspx”页面上,并且它有一个按钮,可以将您重定向到“UserDetail.aspx”网页。
Response.RedirectToRoute
是一个常用的方法。 - The Muffin Man