ASP.Net跨页发布

时间:2009-07-08 16:02:23

标签: asp.net cross-page-posting

目前我有两页:

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

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

有没有办法告诉我,从第二页开始,按哪个按钮提交请求?

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

谢谢!

4 个答案:

答案 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中的按钮。我在一个项目中需要这个,我正在使用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
}

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