如何在asp.net按钮单击事件上使用eventargs参数

时间:2012-07-12 16:35:12

标签: jquery asp.net eventargs

这有点像黑客攻击,但是我在jquery对话框的关闭事件上强制回发。

close: function (event, ui) {
    __doPostBack('<%=btnChange.UniqueID %>', 'refreshMe');
}

它可以正常工作,它会引发服务器端的click事件(由于我试图传递'refreshMe'而不得不关闭EnableEventValidation,这很麻烦)。

我想要的是能够在click事件期间看到第二个参数('refreshMe'),因此我可以知道回发是由jquery对话框关闭事件引起的。所以也许像以下这样的东西或多或少是我所希望的(但它显然不起作用)。

protected void btnChange_Click(object sender, EventArgs e) {
    if (e == "refreshMe")
    {
        // do whatever
    }
    else
    {
        // do whatever
    }
}

我有什么方法可以做到这一点,还是我离开基地?

感谢您的帮助。

修改 为了使这个场景有效,我不得不: 1)将EnableEventValidation设置为false(如果为true则则ASP.NET将抛出错误,并且基本上告诉您它无法验证请求) 2)我尝试使用jquery设置隐藏的__EVENTARGUMENT的值,但无论出于何种原因,值'refreshMe'从未在参数中发送到服务器。我最终做的是将'refreshMe'放在_ doPostBack的第二个参数中,然后它出现在服务器端的Request [“ _EVENTARGUMENT”]中。

1 个答案:

答案 0 :(得分:0)

ASP.Net在页面上存储一个隐藏字段,该字段应包含回发时的“refreshMe”值。

<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

您应该能够在Page_Load中获取__EVENTARGUMENT值:

protected void Page_Load(object sender, EventArgs e) {
   if(Page.IsPostBack) {
      string eventArg = Request("__EVENTARGUMENT");
      if (eventArg == "refreshMe") {
         // ...
      }
   }
}