【问题标题】:How to redirect from one ASP.NET page to another如何从一个 ASP.NET 页面重定向到另一个页面
【发布时间】:2011-08-22 07:18:09
【问题描述】:

如何通过按钮从一个 ASP.NET 页面重定向到另一个(“Webform2.aspx”)?

【问题讨论】:

标签: c# asp.net .net webforms


【解决方案1】:

您可以使用Response.Redirect()从一个页面重定向到另一个页面

【讨论】:

  • 如何重定向到另一个站点?
【解决方案2】:

设置按钮的 PostBackUrl 属性,如下所示:

button1.PostBackUrl= "Webform2.aspx";

【讨论】:

  • 我正要为此 +1,因为这个概念很好(如果只是加载新页面,则无需回发),但 Button 没有 NavigateUrl 属性。
【解决方案3】:

嗯,有很多方法。 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

【讨论】:

    【解决方案4】:

    就个人而言,如果您只想在单击按钮时加载新页面,我会使用客户端脚本来执行此操作。

    您可以为此使用 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(&quot;button1&quot;, &quot;&quot;, true, &quot;&quot;, &quot;webform2.aspx&quot;, false, false))" id="button1" />
    

    如果您有其他处理要在服务器端进行,并且之后需要重定向,请使用 Response.Redirect("Webform2.aspx"); 在您的点击处理程序中。

    如果这对您不起作用,请在您的问题中添加更多细节以解释发生了什么。

    【讨论】:

    • 是否使用 window.location.href = "somepage.aspx" 触发回发,如果是这样,有没有办法像浏览器后退按钮一样不回发?
    【解决方案5】:

    您可以使用以下代码重定向到另一个 ASP.NET 页面:

    Response.Redirect("Webform.aspx");
    

    这是最简单的方法

    【讨论】:

      【解决方案6】:

      您可以使用以下代码:

      protected void Button1_Click(object sender, EventArgs e) {
          Response.Redirect("default2.aspx");
      }
      

      注意default2.aspx 是您的第二个网页名称,而您

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          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”网页。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-12-14
            • 1970-01-01
            • 1970-01-01
            • 2019-11-04
            • 1970-01-01
            • 2015-08-14
            • 2014-02-17
            • 1970-01-01
            相关资源
            最近更新 更多