我有一个asp.net页面,我希望在触发服务器端事件之前显示确认对话框。
但是,当用户单击“确定”按钮时,它不会触发服务器端事件。
我已尝试过发布的其他问题中提到的所有内容。
我认为问题可能是因为我还在使用更新面板:
以下是代码:
<asp:ScriptManager runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="myUpdatePanel" UpdateMode="Conditional">
<ContentTemplate>
<asp:Hyperlink runat="server" ID="InstanceHyperlink" Visible="false"></asp:Hyperlink><asp:Button runat="server" Visible="false" ID="DeleteInstance" OnClick="DeleteInstance_Click" Text="Delete Instance"/>
<asp:Button runat="server" OnClientClick="if ( ! createInstanceConfirm()) { return false; }" OnClick="CreateInstance_Click1" ID="CreateInstance" UseSubmitBehavior="false" Text="Create Instance"></asp:Button>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="CreateInstance" EventName="Click"/>
</Triggers>
</asp:UpdatePanel>
使用Javascript:
<script type="text/javascript">
function createInstanceConfirm()
{
UIkit.modal.confirm("You are about to create a new instance", function ()
{
return true;
});
}
</script>
答案 0 :(得分:6)
您将返回false
但如果您不想取消回发,则必须返回true
。
所以而不是:
OnClientClick="if ( ! createInstanceConfirm()) { return false; }"
你可以使用它(假设该方法返回true
或false
):
OnClientClick="return createInstanceConfirm();"
之前我没有使用过这个组件,但你可以试试这个:
function createInstanceConfirm()
{
bool confirmed = UIkit.modal.confirm("You are about to create a new instance", function ()
{
return true;
});
return confirmed;
}
答案 1 :(得分:0)
您是否尝试从ASyncPostBackTrigger中删除EventName属性 - 不要认为这是必需的。检查页面源一旦呈现,看看哪些事件链接到相关按钮。
答案 2 :(得分:0)
我发现这是使用回调,我设法通过调用另一个手动在按钮上发回帖子的Javascript函数来使其工作:
function createInstanceConfirm() {
return UIkit.modal.confirm("You are about to create a new instance for Development", function () {
JSFunction();
});
}
function JSFunction() {
__doPostBack('<%= CreateInstance.ClientID %>', '');
}
它的工作方式与JQuery确认对话框相同。