ASP.NET在执行代码隐藏之前确认

时间:2012-03-23 03:42:47

标签: javascript asp.net vb.net client-side onclientclick

我有一个用户可以删除记录的表单,我想要一个弹出消息,用户必须单击“确定”以确认删除。

删除按钮:

<asp:Button ID="btnDelete" runat="server" Text="Delete" UseSubmitBehavior="false" OnClick="btnDelete_Click" OnClientClick="confirmation();" />

确认功能:

function confirmation() {
        var answer = confirm("Are you sure you want to delete? This action cannot be undone.")
    }

现在,单击删除按钮会在后面的代码中执行btnDelete_Click Sub,无论您是单击okay还是在弹出框中取消。我知道我可以在我的javascript函数中添加if(answer){ - 这里的一些代码 - },但是可以使用javascript从代码隐藏中执行代码吗?还是有另一种方法可以做到这一点吗?

12 个答案:

答案 0 :(得分:32)

请尝试如下。您必须返回确认函数的结果(true或false)。

<asp:Button 
    ID="btnDelete" 
    runat="server" 
    Text="Delete" 
    UseSubmitBehavior="false" 
    OnClick="btnDelete_Click" 
    OnClientClick="return confirmation();" />

function confirmation() {
    return confirm("Are you sure you want to delete?");
}

答案 1 :(得分:10)

将它放在你的aspx代码中:

OnClientClick="return confirm('Are you sure you want to delete this project?');" 

答案 2 :(得分:4)

请使用此示例:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return ConfirmOnDelete();"/>

<script type="text/javascript">    
   function ConfirmOnDelete() {
    if (confirm("Do you really want to delete?") == true)
        return true;
    else
        return false;
   }
</script>

答案 3 :(得分:4)

我知道这是旧帖子,但您可以将上述答案放在这样的一行中。你甚至不需要编写这个函数。

 <asp:Button runat="server" ID="btnDelete" Text="Delete" OnClick="btnDelete_Click" OnClientClick="if ( !confirm('Are you sure you want to delete ? ')) return false;"  />

答案 4 :(得分:3)

我们可以使用ConfirmButtonExtender轻松完成此操作,

<ajaxToolkit:ConfirmButtonExtender ID="cbeDelete" TargetControlID="btnDelete" ConfirmText="Are you sure you want to delete? This action cannot be undone." runat="server">

非常简单......

答案 5 :(得分:0)

如果你想在服务器端执行某些代码而不实际发回帖子,你必须使用ajax来做到这一点。

function confirmation() {
        var answer = confirm("Are you sure you want to delete? This action cannot be undone.")
        if(answer)
        {
           $.post("ajaxserverpage.aspx?item=34",function(data){
              alert(data); 
          });
        } 
        return false; 
    }

并有一个名为ajaxserverpage.aspx的页面,并在该页面的页面加载中,检查查询字符串并执行相关的服务器端代码并​​返回一些字符串

   protected void Page_Load(object sender, EventArgs e)
   {
        if (Request.QueryString["item"] != null)
        {
          // read the item and do your stuff here
         Response.Write("Deleted succssfully");
         Response.End();
        }
    }

您也可以使用generic handler (.ashx)来执行ajax服务器端处理而不是.aspx文件。我更喜欢这种方法。

答案 6 :(得分:0)

实现这一目标的另一种方法是使用AJAX Toolkit ConfirmButton Extender,如下所示:

http://www.ezineasp.net/Samples/ASP-Net-AJAX-cs/Control-Toolkit/AJAX-ConfirmButton-Control/Default.aspx

答案 7 :(得分:0)

我认为如果您无法使用Button,上面应该有效,请尝试<asp:link button>。我的工作得很好。

ASPX页面: -

<asp:LinkButton  ID="takeActionBtn" CausesValidation="false" runat="server" 
        onclientclick="return confirm('Do you really want to perform Action ?');"> Take Action </asp:LinkButton>

VB服务器代码隐藏: -

Protected Sub takeActionBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles takeActionBtn.Click

End Sub

我注意到的一件事是,如果您在页面中使用控件(ascx),则可能需要在页面或控制级别AutoEventWireup="false" <%@ control in <%@ page

关闭/打开

祝你好运!!

答案 8 :(得分:0)

1)表单设计

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type = "text/javascript">
    function Confirm() {
        var confirm_value = document.createElement("INPUT");
        confirm_value.type = "hidden";
        confirm_value.name = "confirm_value";
        if (confirm("Do you want to save data?")) {
            confirm_value.value = "Yes";
        } else {
            confirm_value.value = "No";
        }
        document.forms[0].appendChild(confirm_value);
    }
</script>
</head>
<body>
<form id="form1" runat="server">
  <asp:Button ID="btnConfirm" runat="server" 
 OnClick = "OnConfirm" Text ="Raise Confirm" OnClientClick = "Confirm()"/>
</form>
</body>
</html>

2)Codebehind

public void OnConfirm(object sender, EventArgs e)
{
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"alert('You    clicked YES!')", true);
}
else
{
    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true);
}
}

3)当您单击删除按钮时,将显示确认框。

4)如果单击“确定”,则“确定”部分将在代码“否零件”

中工作

5)GRIDVIEW DELETE BUTTON中的相同方法。

答案 9 :(得分:0)

你可以放:

onclientclick = "return (window.confirm('text message'));

ASPX页面中,它会做同样的事情。

答案 10 :(得分:0)

OP,我走得更远。我想避免在整个应用程序中重复确认代码。我希望这可以对那些希望将关注点分离和标准化消息传递的人有所帮助。

<!- asp.net html side -->
<asp:Button 
    ID="btnRemoveOU" 
    runat="server" 
    Text="Delete OU" 
    OnClick="btnRemoveOU_Click" 
    OnClientClick="return confirmation('Delete the OU');" />

// javascript Side 
function confirmation(action) {
    var answer = confirm("Are you sure you want to " + action + "? This action cannot be undone.")
    return answer;
}

hth

答案 11 :(得分:-2)

如果您希望javascript访问后面代码中的方法,您可以始终在RESTful服务中公开它们。

$.ajax({
  url: 'url to the rest call',
  success: successfuntion(),
  dataType: 'text/json'
});

让REST调用执行您需要的任何逻辑并发回一些数据以表示成功。然后只需使用successfunction从DOM中删除元素。