我想在用户上传数据之前在我的asp.net网站上显示一个确认对话框。
我正在使用http://marcosesperon.es/apps/messi/插件进行对话框。
客户端点击时会出现对话框。
我希望仅在用户单击“是”时才执行服务器端代码。
我可以显示确认框,但我的服务器端代码没有执行。
请帮忙。
客户代码
var confirmed = false;
if (!confirmed) {
new Messi('Do you want to update status ?.', {
title: 'Confirm',
buttons: [{ id: 0, label: 'Yes', val: 'Y' }, { id: 1, label: 'No', val: 'N' }],
callback: function (val) {
confirmed=val;
}
}
);
}
return confirmed;
这是我的代码。
服务器代码
<asp:Button ID="Button2" CssClass="myButton2" runat="server" OnClientClick="if( ! Button2Confirm()) return false;" Text="Update" Width="117px" OnClick="Button2_Click" />
答案 0 :(得分:0)
为什么在这种情况下使用jQuery Ajax调用。
请参阅下面的示例jQuery Ajax调用示例
http://www.aspsnippets.com/Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx
var confirmed = false;
if (!confirmed) {
new Messi('Do you want to update status ?.', {
title: 'Confirm',
buttons: [{ id: 0, label: 'Yes', val: 'Y' }, { id: 1, label: 'No', val: 'N' }],
callback: function (val) {
$.ajax({
type: "POST",
url: "Your_webpage.aspx/your_web_method",
data: '{name: confirmed }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function(response) {
alert(response.d);
}
});
}
}
);
}
return confirmed;
:)
答案 1 :(得分:0)
你的
return confirmed;
在按钮回调之前运行,因此该函数将始终返回false。您必须在回调函数中调用服务器端代码:
new Messi('Do you want to update status ?.', {
title: 'Confirm',
buttons: [{ id: 0, label: 'Yes', val: 'Y' }, { id: 1, label: 'No', val: 'N' }],
callback: function (val) {
if(val == 'Y')
// call server side
}
}
);
要拨打按钮,您可以使用以下内容:
__doPostBack('Button2','');
在JavaScript中,但我建议您查看jQuery ajax和ASP.NET Web API。
如果您想在OnClientClick中执行此操作,则无法使用您的插件,必须返回JavaScript确认功能:
OnClientClick="return confirm("Are you sure?");"
确认将停止执行,直到用户按下其中一个按钮。