【问题标题】:ASP.Net Cross Page PostingASP.Net 跨页发布
【发布时间】:2009-07-08 16:02:22
【问题描述】:

目前我有两个页面:

第一页包含一个输入表单,第二页生成一个excel文档。输入表单的按钮发布到第二页。

我想做的是添加第二个按钮,该按钮也发布到第二页;但是,我需要从这个新按钮创建的请求以不同的方式执行,这让我想到了我的问题:

有没有一种方法可以让我从第 2 页看出按下了哪个按钮来提交请求?

我问的主要原因是如果可能的话,我想重用第二页的逻辑来解析第一页的信息;我宁愿不必将它复制到新页面并让新按钮发布到该页面。

谢谢!

【问题讨论】:

    标签: asp.net cross-page-posting


    【解决方案1】:

    您可以在第一页的表单上有一个隐藏的文本框,每个按钮在发布到第二页之前设置一个值。然后第二页可以评估该隐藏文本框的值。

    编辑:重新阅读您的帖子后,我想我误解了您试图完成的工作。如果您只是想确定单击了发送页面上的哪个按钮,则可以使用查询字符串来完成:

    Page1.aspx:

    <asp:Button ID="Button1" Text="Button 1" PostBackUrl="~/Page2.aspx?button=1" runat="server" />
    <asp:Button ID="Button2" Text="Button 2" PostBackUrl="~/Page2.aspx?button=2" runat="server" />
    

    Page2.aspx.cs:

    string sButton = "0";
    if (Request.QueryString["button"] != null)
        sButton = Request.QueryString["button"];
    
    if (sButton == "1")
        // Do button 1 stuff
    else if (sButton == "2")
        // Do button 2 stuff
    

    【讨论】:

      【解决方案2】:

      如果这只是纯 HTML 并且您的表单操作属性指向第二页...

      您只需要具有相同名称属性和两个不同值属性的两个不同提交按钮。单击任一按钮时,它会将表单字段提交到第二页。使用提交按钮的名称检查已发布元素的值将告诉您点击了哪个。

      如果我们谈论的是 ASP.NET(正如您的标题和标签所暗示的那样),您可以在回发中处理每个按钮的服务器端单击事件,以确定单击了哪个按钮。但是将 ASP.NET 表单提交到第二个页面并不一定简单。 See the Scott Guthrie post 关于 URL 重写,特别是接近结尾的部分关于覆盖表单标记的操作属性。

      【讨论】:

      • 目前设置为首页没有真正的逻辑;该按钮将其“PostBackUrl”属性设置为第二页,其中第二页使用“Page.PreviousPage”来获取发布内容的值
      【解决方案3】:

      在做了一些调试之后,看起来我最好的办法是确定按钮是否包含在表单值中。

      if(Request.Form["Button1ClientID"] != null)
        //button 1 stuff
      else if(Request.Form["Button2ClientID"] != null)
        //button 2 stuff
      

      如果有人知道更好的方法,请告诉我

      编辑:UniqueID,而不是ClientID

      【讨论】:

        【解决方案4】:

        实际上,检查 Request.Form 中的按钮仅在您使用 Button 控件时才有效。我在使用 LinkBut​​tons 的项目中需要这个,它不会在 Request.Form 中放置任何东西。但是,我能够使用以下代码确定按下了哪个按钮:

        if (Request.Form["__EVENTTARGET"] == button1.UniqueID) {
          // do button 1 stuff
        } else if (Request.Form["__EVENTTARGET"] == button2.UniqueID) {
          // do button 2 stuff
        }
        

        无论如何,我觉得这些论坛很有帮助,我想我应该发布一次答案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-02
          • 2012-02-19
          • 2013-07-16
          相关资源
          最近更新 更多