1

ちょっとしたハックですが、jquery ダイアログの close イベントでポストバックを強制しています。

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

それは正常に機能し、サーバー側でクリック イベントを発生させます (「refreshMe」を渡そうとしているため、EnableEventValidation をオフにする必要があるという小さな煩わしさがあります)。

私が望むのは、クリック イベント中に 2 番目の引数 ('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」が引数でサーバーに送信されませんでした。私がやったのは、_doPostBackの2番目の引数に「refreshMe」を入れることでした。その後、サーバー側の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 に答える