ASP.NET回发:在哪里调用代码隐藏方法

时间:2016-05-26 06:11:09

标签: c# asp.net postback

我是C#和ASP.NET的新手。我有一个jQuery是/否对话框,使用回发调用服务器端方法(代码隐藏)。

我使用我在互联网上找到的一些代码段将代码放在一起,但我不完全理解代码是如何工作的。

如果我在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>

如果用户在jQuery对话框中单击“是”,则btnDeleteConfirmedClientside被“点击”,然后调用__doPostBack(&#39;btnDeleteConfirmedClientside&...)(至少这是我理解的)

我不明白这是在渲染的html中:

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

为什么__doPostBack使用btnDeleteConfirmedClientside而不是服务器端代码隐藏方法DeleteConfirmedServerside

DeleteConfirmedServerside被调用 - 但是这是怎么回事,因为在HTML中我没有看到对服务器端方法的引用...那么如何调用C#代码隐藏方法DeleteConfirmedServerside

1 个答案:

答案 0 :(得分:0)

__doPostBack javascript方法回发到服务器,有效地请求调用服务器端方法。 这个HTTP post请求的处理是在幕后处理的,并调用你的服务器端方法。

如果您是asp.net的新用户,我建议您首先查看http://www.asp.net/mvc并使用asp.net mvc而不是asp.net webforms,这就是您所需要的使用。 MVC是最新的,也是最伟大的,并且与webforms相比具有许多优势。