这有点像黑客攻击,但是我在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”]中。
答案 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") {
// ...
}
}
}