检测页面加载时按下了哪个按钮

时间:2015-01-29 18:57:55

标签: c# asp.net

我有2个按钮并且在页面加载中,我想检查按下了哪个按钮。

所以我用过:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            if (string.IsNullOrEmpty(Request.Form["__EVENTTARGET"].ToString()))
            {
                [COMES HERE]
            }
            else
            {
                string eTarget = Request.Form["__EVENTTARGET"].ToString();
            }           
        }
        else
        {
            LoadAllData();
        }
    }

在这里,按下按钮后,它显示为null。 我怎么知道按下了哪个按钮?

2 个答案:

答案 0 :(得分:0)

您需要手动进行回发,并使用ASP.NET内置函数__doPostBack("target","arguments")

将按钮的ID发送回服务器

首先,在您的aspx页面上创建一个js函数,该函数将由客户端的按钮调用:

function ManualPostback(postbackTarget) {
    __doPostBack(postbackTarget.id, "");
}

现在,您需要在按钮上添加2个新属性:

  • OnClientClick - 当客户点击按钮
  • 时,这将调用js函数
  • ClientIDMode="static" - 这告诉ASP.NET让按钮保留您分配给它们的ID,而不是像默认情况那样为客户端生成新的

你的按钮看起来应该是这样的:

<asp:Button ClientIDMode="Static" ID="Button1" runat="server" Text="Button" OnClientClick="ManualPostback(this);"/>
<asp:Button ClientIDMode="Static" ID="Button2" runat="server" Text="Button" OnClientClick="ManualPostback(this);" />

答案 1 :(得分:0)

要让您的代码正常工作,您似乎必须拥有UseSubmitBehavior="false"

例如:

<asp:Button runat="server" ID="btn1" Text="Button 1" OnClick="btn1_Click" UseSubmitBehavior="false"  />