目前我有两页:
第一页包含输入表单,第二页生成excel文档。输入表单的按钮会发布到第2页。
我想要做的是添加第二个按钮,该按钮也会发布到第二页;但是,我需要从这个新按钮创建的请求采取不同的行动,这让我想到了我的问题:
有没有办法告诉我,从第二页开始,按哪个按钮提交请求?
我要问的主要原因是,如果可能的话,我想重新使用第二页的逻辑来解析第一页的信息;我宁愿不必将其复制到新页面并将新按钮发布到该页面。
谢谢!
答案 0 :(得分:3)
您可以在第一页上的表单上有一个隐藏文本框,每个按钮在发布到第二页之前设置一个值。然后,第二页可以评估该隐藏文本框的值。
编辑:重新阅读您的帖子后,我想我误解了您的目标。如果您只是想确定点击发送页面上的哪个按钮,可以使用查询字符串完成:
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
答案 1 :(得分:0)
如果这只是纯HTML而您的表单操作属性指向第二页......
您只需要有两个不同的提交按钮,这些按钮具有相同的名称attrib和两个不同的值属性。单击任一按钮时,它会将表单字段提交到第二页。使用提交按钮的名称检查已发布元素的值将告诉您单击了哪一个。
如果我们正在谈论ASP.NET(如标题和标签所示),您可以处理回发中每个按钮的服务器端点击事件,以确定单击了哪一个。但是将ASP.NET表单提交到第二页并不一定简单。关于URL重写的See the Scott Guthrie post,特别是关于覆盖表单标记的操作属性的结尾部分。
答案 2 :(得分:0)
在做了一些调试之后,看起来我最好的办法是确定按钮是否包含在表单值中。
即
if(Request.Form["Button1ClientID"] != null)
//button 1 stuff
else if(Request.Form["Button2ClientID"] != null)
//button 2 stuff
如果有人知道更好的方法,请告诉我
修改:UniqueID,而不是ClientID
答案 3 :(得分:0)
实际上,只有在使用Button控件时才检查Request.Form中的按钮。我在一个项目中需要这个,我正在使用LinkButtons,它不会在Request.Form中放置任何东西。但是,我能够使用以下代码确定按下了哪个按钮:
if (Request.Form["__EVENTTARGET"] == button1.UniqueID) {
// do button 1 stuff
} else if (Request.Form["__EVENTTARGET"] == button2.UniqueID) {
// do button 2 stuff
}
无论如何,我觉得这些论坛很有帮助,我想我应该发一次答案。