2016-05-26 10 views
1

私はC#とASP.NETを初めて使用しています。ポストバックを使ってサーバサイドメソッド(コードビハインド)を呼び出すjQueryのyes/noダイアログがあります。ASP.NETポストバック:呼び出されるコードビハインドメソッドはどこですか

私はインターネット上で見つけた抜粋を使ってコードをまとめましたが、コードがどのように機能しているか完全に理解していません。

jQueryダイアログで「はい」をクリックすると、サーバー側のC#メソッドDeleteConfirmedServersideが呼び出されます。

しかし、レンダリングされたhtmlコードでは、サーバー側のメソッドへの参照が表示されないため、なぜ動作するのか分かりません。

は私はjavascriptのポストバックについてのいくつかの記事を読んだ...それでも私は、次のコードが動作する理由を理解していない:

.aspxファイル

// jQuery code (Dialog with yes/no Buttons) 
buttons: [ 
{ 
    id: "Yes", 
    text: "Yes", 

    click: function() 
    { 
     $("#btnDeleteConfirmedClientside").click();  
    } 
}, 
.... 

<asp:Button ID="btnDeleteCanceledClientside" runat="server" 
    OnClick="DeleteCanceledServerside" Text="DeleteCanceled" 
    UseSubmitBehavior="false" style="display:none"/> 
<asp:Button ID="btnDeleteConfirmedClientside" runat="server" 
    OnClick="DeleteConfirmedServerside" Text="DeleteConfirmed" 
    UseSubmitBehavior="false" style="display:none" /> 

<div id="myDialog" style="display: none" > 
    Do you want to delete this record? 
</div> 

コードビハインド(サーバー側)

protected void DeleteConfirmedServerside(object sender, EventArgs e) 
{ 
    // called by postback from clientside 
    ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Delete confirmed (YES).')", true); 
} 

レンダリングされたHTMLクライアント側:

function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 

... 

<input type="button" name="btnDeleteCanceledClientside" value="DeleteCanceled" 
     onclick="javascript:__doPostBack(&#39;btnDeleteCanceledClientside&#39;,&#39;&#39;)" 
     id="btnDeleteCanceledClientside" style="display:none" /> 
<input type="button" name="btnDeleteConfirmedClientside" value="DeleteConfirmed" 
     onclick="javascript:__doPostBack(&#39;btnDeleteConfirmedClientside&#39;,&#39;&#39;)" 
     id="btnDeleteConfirmedClientside" style="display:none" /> 

<div id="myDialog2" style="display: none" > 
    Do you want to delete this record? 
</div> 
012ユーザーはjQueryのダイアログで「はい」をクリックすると

が、その後、btnDeleteConfirmedClientsideは、「クリック」され、その後、__doPostBack(&#39;btnDeleteConfirmedClientside&...)

は、私が理解していないが、レンダリングにこれをある(少なくともこれは私が理解される)と呼ばれているHTML :

onclick="javascript:__doPostBack(&#39;btnDeleteConfirmedClientside&#39;,&#39;&#39;) 

なぜ__doPostBackbtnDeleteConfirmedClientsideはなく、サーバー側のコードビハインド方式DeleteConfirmedServersideを使用していますか?

DeleteConfirmedServersideが呼び出されていますが、HTMLではどこにもないので、サーバサイドメソッドへの参照があります... C#コードビハインドメソッドDeleteConfirmedServersideはどのように呼び出されますか?

答えて

0

__doPostBack javascriptメソッドは、サーバー側のメソッドを呼び出すことを効果的に要求するポストバックをサーバーに戻します。 このHTTP POSTリクエストの処理は、バックグラウンドで処理され、サーバー側のメソッドを呼び出します。

asp.netを初めてお使いの方は、まずhttp://www.asp.net/mvcをご覧になり、使用しているasp.net webformsではなくasp.net mvcを使用することをお勧めします。 MVCは最新かつ最高のもので、ウェブフォームに比べて多くの利点があります。

関連する問題