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

C# asp.net中运行时的确认对话框,c#,asp.net,javascript,C#,Asp.net,Javascript,我有一个简单的内容管理系统,可以按页面名和版本存储页面。单击保存后,我的代码(服务器端)检查是否存在Pagename/Version 如果存在,我想显示一个确认对话框,要求用户确认是否应替换当前的页面名/版本 最简单的方法是什么?谢谢 <asp:Button OnClientClick="return confirm('Are you sure you want to go?');" Text="Confirm" runat="server" onclick="

我有一个简单的内容管理系统,可以按页面名和版本存储页面。单击保存后,我的代码(服务器端)检查是否存在Pagename/Version

如果存在,我想显示一个确认对话框,要求用户确认是否应替换当前的页面名/版本

最简单的方法是什么?谢谢


<asp:Button OnClientClick="return confirm('Are you sure you want to go?');" 
            Text="Confirm" runat="server" onclick="Unnamed1_Click" />
如果他们单击OK,服务器onclick事件将发生,如果他们单击cancel,就好像他们甚至没有按下按钮一样,当然,您始终可以向cancel部分添加功能性

可能是这样的:

<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>

函数CompareConfirm()
{
var str1=“abc”;
var str2=“def”;
如果(str1==str2){
//你的逻辑在这里
返回false;
}否则{
//你的逻辑在这里
返回确认(“确认?”);
}
}

在将页面呈现给客户端之前进行检查。然后将一个处理程序(在客户端,例如javascript)附加到显示确认框的保存按钮或表单上(但仅当保存导致替换时)。

我感谢前面的两个答案,它们很有帮助,但并不完全是我想要的。在考虑了这些回答并做了更多的研究之后,我发布了我的解决方案,以便它可能会帮助其他人

按钮代码:

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

不需要AJAX的另一种更简单的方法是允许正常发回,然后在代码隐藏中进行检查

如果需要用户确认,只需将用户返回到同一页面,但要显示一个额外的面板并隐藏原始的“保存”按钮


在此额外面板中,使用另一个“确定/取消”按钮显示消息。当用户单击此确定按钮时,执行保存

在页面中添加隐藏字段,例如Hiddenfield1

然后添加这个函数

public  bool Confirm(string MSG)
{
    string tmp = "";
    tmp = "<script language='javascript'>";
    tmp += "document.getElementById('HiddenField1').value=0; if(confirm('" + MSG + "'))           document.getElementById('HiddenField1').value=1;";
    tmp += "</script>";
    Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ConfirmBox", tmp);
    if(HiddenField1.Value.Trim()=="0") return false;
    return true;
}
public bool确认(字符串消息)
{
字符串tmp=“”;
tmp=“”;
tmp+=“document.getElementById('HiddenField1')。值=0;if(confirm('“+MSG+”))document.getElementById('HiddenField1')。值=1;”;
tmp+=”;
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(),“confirBox”,tmp);
if(HiddenField1.Value.Trim()=“0”)返回false;
返回true;
}

用户在文本框中输入页面名/版本名,因此我不确定在渲染前如何检查。我想我可以在javascript中使用pagemethod进行检查,但这是最好的方法吗?如果只是检查两个字符串,可以在javascript中进行检查,在JS中执行CompareConfirm()方法,并在asp:Button OnClientClick事件中调用它,比较两个字符串并让该方法返回Confirm()。我将在下面的回答中进一步阐述。我认为他希望在服务器端而不是javascript中进行比较。我在IE9和FF26上尝试了这种技术,但没有看到任何确认对话框出现。没有错误,只是没有确认对话框。这类问题最常见的原因是什么?
[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;            
    }
public  bool Confirm(string MSG)
{
    string tmp = "";
    tmp = "<script language='javascript'>";
    tmp += "document.getElementById('HiddenField1').value=0; if(confirm('" + MSG + "'))           document.getElementById('HiddenField1').value=1;";
    tmp += "</script>";
    Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ConfirmBox", tmp);
    if(HiddenField1.Value.Trim()=="0") return false;
    return true;
}