我是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('btnDeleteCanceledClientside','')"
id="btnDeleteCanceledClientside" style="display:none" />
<input type="button" name="btnDeleteConfirmedClientside" value="DeleteConfirmed"
onclick="javascript:__doPostBack('btnDeleteConfirmedClientside','')"
id="btnDeleteConfirmedClientside" style="display:none" />
<div id="myDialog2" style="display: none" >
Do you want to delete this record?
</div>
如果用户在jQuery对话框中单击“是”,则btnDeleteConfirmedClientside
被“点击”,然后调用__doPostBack('btnDeleteConfirmedClientside&...)
(至少这是我理解的)
我不明白这是在渲染的html中:
onclick="javascript:__doPostBack('btnDeleteConfirmedClientside','')
为什么__doPostBack
使用btnDeleteConfirmedClientside
而不是服务器端代码隐藏方法DeleteConfirmedServerside
?
DeleteConfirmedServerside
被调用 - 但是这是怎么回事,因为在HTML中我没有看到对服务器端方法的引用...那么如何调用C#代码隐藏方法DeleteConfirmedServerside
?
答案 0 :(得分:0)
__doPostBack javascript方法回发到服务器,有效地请求调用服务器端方法。 这个HTTP post请求的处理是在幕后处理的,并调用你的服务器端方法。
如果您是asp.net的新用户,我建议您首先查看http://www.asp.net/mvc并使用asp.net mvc而不是asp.net webforms,这就是您所需要的使用。 MVC是最新的,也是最伟大的,并且与webforms相比具有许多优势。