1

目前我有两个页面:

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

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

有没有办法从第二页告诉我按下了哪个按钮来提交请求?

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

谢谢!

4

4 回答 4

3

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

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

第1页.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
于 2009-07-08T16:22:08.353 回答
0

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

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

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

于 2009-07-08T16:15:45.340 回答
0

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

IE

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

如果有人知道更好的方法来做到这一点,请告诉我

编辑:UniqueID,而不是 ClientID

于 2009-07-08T16:16:10.050 回答
0

实际上,检查 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
}

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

于 2011-01-14T22:50:43.620 回答