1

这有点像 hack,但我在 jquery 对话框的关闭事件上强制回发。

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

它按应有的方式工作,并引发了服务器端的点击事件(由于我试图传入“refreshMe”,因此不得不关闭 EnableEventValidation 的小麻烦)。

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

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

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

谢谢您的帮助。

编辑 为了让这个场景正常工作,我必须:1)将 EnableEventValidation 设置为 false(如果它是真的,那么 ASP.NET 将抛出一个错误并基本上告诉你它无法验证请求)2)我尝试设置值使用 jquery 隐藏的 __EVENTARGUMENT,但无论出于何种原因,值“refreshMe”从未在参数中发送到服务器。我最终做的是把'refreshMe'放在_doPostBack的第二个参数中,然后它出现在服务器端的Request[“_EVENTARGUMENT”]中。

4

1 回答 1

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") {
         // ...
      }
   }
}
于 2012-07-12T16:53:47.487 回答