asp.net中运行时的确认对话框

Ger*_*ois 9 javascript c# asp.net

我有一个简单的内容管理系统,通过Pagename和Version存储页面.单击Save后,我的代码(服务器端)检查是否存在Pagename/Version.

如果存在,我想显示一个确认对话框,要求用户确认是否应该替换当前的Pagename/Version.

实现这一目标的最简单方法是什么?谢谢.

Car*_*rlo 13

<asp:Button OnClientClick="return confirm('Are you sure you want to go?');" 
            Text="Confirm" runat="server" onclick="Unnamed1_Click" />
Run Code Online (Sandbox Code Playgroud)

如果他们点击OK,服务器onclick事件就会发生,如果他们点击取消,就好像他们甚至没有按下按钮,当然,你总是可以在取消部分添加功能.

也许是这样的:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function CompareConfirm() 
        {
            var str1 = "abc";
            var str2 = "def";

            if (str1 === str2) {
                // your logic here
                return false;
            } else {
                // your logic here
                return confirm("Confirm?");
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button OnClientClick="return CompareConfirm();" 
            Text="Confirm" runat="server" onclick="Unnamed1_Click" />
    </div>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


Ger*_*ois 7

我很欣赏以前的答案,他们很有帮助,但不完全是我想要的.在考虑了回复并做了更多的研究后,我发布了我的解决方案,以便它可能会帮助其他人.

按钮代码:

 <asp:Button ID="btnSave" OnClick="btnSaveClick" runat="server" Text="Save" OnClientClick="return CheckForVersion()" />
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

<script language="javascript">
    function CheckForVersion() {
        PageMethods.CheckForVersion(aspnetForm.ctl00$ContentPlaceHolder1$ddlPageName2.value, aspnetForm.ctl00$ContentPlaceHolder1$txtContentName2.value, OnSucceeded, OnFailed);
        return false;
    }

    function OnSucceeded(results) {
       if(results) {
            //version exists so prompt user
            if(confirm("Version already exists. Do you want to overwrite?")) {
                __doPostBack('ctl00$ContentPlaceHolder1$btnSave','');
            }
        }
        else
        {
            //version does not exist so save it without prompting user
            __doPostBack('ctl00$ContentPlaceHolder1$btnSave',''); 
        }

    }

    function OnFailed(error) {
        // handle pagemethod error
        alert(error.get_message());
    }

</script>
Run Code Online (Sandbox Code Playgroud)

C#使用Subsonic 2.1:

[WebMethod]
    public static bool CheckForVersion(string pageName, string versionName)
    {
        PageContentCollection pages = new PageContentCollection().Where("pageName", pageName).Where("versionName", versionName).Load();
        if (pages.Count > 0)
            return true;
        else
            return false;            
    }
Run Code Online (Sandbox Code Playgroud)