1

確かに重複としてマークされますが、たくさんの質問と例の後、私は自分の問題を解決できませんでした。
私は何をしたいですか?
クライアント側のJavaスクリプトからasp.netでサーバー側のイベントハンドラーを呼び出すと、サーバー側では実行されません。ブレークポイントを設定して確認したところ、ページはフリックしますが、サーバー側のメソッドは呼び出されません。
コードビハインドの私のクリックイベントは

  protected void btninsert_Click(object sender, EventArgs e)
  {
      // my code
  }

aspx ファイル

   <asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn"
      OnClientClick="DoPost()" Text="Save" />

Javascriptメソッドは

   function DoPost() {
        function DoPost() {
        var chk = document.getElementById('<%= chkstatus.ClientID %>');
        if (chk.checked)
            __doPostBack('<%= btninsert.ClientID %>', 'OnClick');
        return true;
        //return false;
    } 
    } 

__doPostBack('btninsert', 'OnClick');私もこれを試しました が__doPostBack('btninsert', '');$('btnSubmit').trigger('click');成功しませんでした。

私は何を間違っていますか?

編集:イベントを使用すると、メソッドにOnClick関係なく、サーバー側のイベントになります。if conditionDoPost

4

6 に答える 6

7

ああ、それは簡単でした。すべての回答に感謝します。
解決策:サーバー側イベントとクライアント イベントに属性を
使用して検証します。 javascript メソッドが返され、サーバー側のonclick イベントが発生するかどうかを決定します。 コードは次のようになりますOnClickOnClientclickOnClientClicktruefalse

  <script type="text/javascript">
    function DoPost() {
        var chk = document.getElementById('<%= chkstatus.ClientID %>');
        if (chk.checked) {
            var c = confirm("are you sure?");
            if (c == true) {
                return true;
            } else
            { return false; }
        }
        return true;
    } 
</script>

そしてボタンタグ

<asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn"
   OnClientClick="return DoPost();" OnClick="btninsert_Click" Text="Save" />
于 2013-05-24T07:09:00.503 に答える
3
<asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn" OnClick="btninsert_Click" OnClientClick="DoPost()" Text="Save" />

を追加OnClick="btninsert_Click"します。この情報がないと、asp.net は「クリック」イベントに対して実行するイベント ハンドラーを認識できないためです。クライアント側のスクリプトでポストバックするかどうかを制御したい場合。次のようなことができます。

<asp:Button ID="btninsert" runat="server" ValidationGroup="form" CssClass="btn" OnClick="btninsert_Click" OnClientClick="return DoPost()" Text="Save" />

function DoPost() {
        __doPostBack('<%= btninsert.ClientID %>', 'OnClick');
        return true;
      //return false;
    } 

注意してくださいOnClientClick="return DoPost()"

于 2013-05-23T10:17:42.747 に答える
0

Webmethod を使用して、Ajax を試すことができます。私は自分のプロジェクトでこれを使用しましたが、正常に動作します! ここで質問、解決策、およびコードを確認できます: http://www.codeproject.com/Questions/416748/How-to-Call-WebMethod-of-Csharp-from-JQuery

于 2013-05-23T10:05:48.643 に答える