【发布时间】:2011-08-22 07:18:09
【问题描述】:
如何通过按钮从一个 ASP.NET 页面重定向到另一个(“Webform2.aspx”)?
【问题讨论】:
-
Response.Redirect 应该可以工作..
-
对于路由人员-
Response.RedirectToRoute
如何通过按钮从一个 ASP.NET 页面重定向到另一个(“Webform2.aspx”)?
【问题讨论】:
Response.RedirectToRoute
您可以使用Response.Redirect()从一个页面重定向到另一个页面
【讨论】:
设置按钮的 PostBackUrl 属性,如下所示:
button1.PostBackUrl= "Webform2.aspx";
【讨论】:
Button 没有 NavigateUrl 属性。
嗯,有很多方法。 Response.Redirect, Server.Transfer, Javascript 调用页面。
当您对按钮没有服务器端操作时,需要调用 Javascript。
onclick="javascript:window.location.href = Webform2.aspx?id='<%=Request.QueryString["id"]%>'"
Server.Transfer 将在服务器端进行重定向。即,浏览器仍会在 webform2 的响应后显示。 Webform1.aspx 会将请求重定向到 webform2,webform2 将给出请求。 (请求 = 1,资源 = 1)
Response.Redirect: webform1 将发送一个响应,要求浏览器向 webform2 发出新请求。在这种情况下,浏览器将在向 webform2 发出新请求时更改 url。(Req = 1 + 1, Res = 1+1)
如果您有兴趣,还有另一种方法,form.submit()。传统的html表单提交。
忘了提到最好的,带有 PostBack url 的跨页回发。 http://aspdotnetcode.source-of-humor.com/TipsAndTricks/General/CrossPagePostbackAspNetCrossPagePostback.aspx
【讨论】:
就个人而言,如果您只想在单击按钮时加载新页面,我会使用客户端脚本来执行此操作。
您可以为此使用 JS 库(例如:jQuery),如下所示:
jQuery
$(function() {
$('#<%= button1.ClientID %>').click(function() {
window.location.href = "Webform2.aspx";
});
});
ASP.NET
<asp:Button id="button1" runat="server"/>
或者,对于特定的 ASP.NETesque 方式,您可以使用 Antonio 建议的 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"); 在您的点击处理程序中。
如果这对您不起作用,请在您的问题中添加更多细节以解释发生了什么。
【讨论】:
您可以使用以下代码重定向到另一个 ASP.NET 页面:
Response.Redirect("Webform.aspx");
这是最简单的方法
【讨论】:
您可以使用以下代码:
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect("default2.aspx");
}
注意default2.aspx 是您的第二个网页名称,而您
【讨论】:
Response.Redirect(string url) 发出 302 HTTP 状态代码,指示 客户端 重定向到 url。浏览器会发出一个新的url请求,地址栏中的URL会发生变化。
Server.Transfer(string path) 终止当前页面的执行并开始在指定的path 上执行新页面,即 IIS 内的内部。因此浏览器地址栏中的 URL 不会改变。您转移到的页面必须是同一网站中的 aspx 页面。
这些差异很微妙但很重要。考虑这个问题的一个简单方法是问自己“用户应该收藏/收藏这个 URL 吗?”。如果 URL 已更改并且将来对内容的访问应该在新 URL 上,请使用 Response.Redirect。如果 URL 正确且是最新的,请使用 Server.Transfer,但您需要在这一次显示不同的内容 - 也许您正在显示一条错误消息,或者您需要用户输入他们的凭据才能继续,或者有其他原因导致内容应该更改,但不应更改 URL。
以上任何一个都可以在您的代码隐藏中的 ASP.NET Button 控件的 Click 事件处理程序中使用:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Webform2.aspx");
// OR
Server.Transfer("Webform2.aspx");
}
【讨论】:
Response.Redirect 和 Server.Transfer 方法都用于将用户从一个网页转移到另一个网页。这两种方法的用途相同,但仍存在一些差异,如下所示。
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”网页。
【讨论】: