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

ASP.NET confirm before executing codebehind

本文关键字:确认 隐藏 代码 NET 执行 ASP      更新时间:2023-09-26

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

删除按钮:

<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,无论您在弹出框中单击确定还是取消。我知道我可以在我的 javascript 函数中添加 if (answer( { -- 这里有一些代码 -- },但是是否可以使用 javascript 从代码隐藏中执行代码?还是有其他方法可以做到这一点?

请尝试以下操作。您必须返回确认函数的结果(真或假(。

<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?");
}

把它放在你的aspx代码中:

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

这是旧帖子,但你可以像这样将上面的答案放在一行中。而且您甚至不需要编写函数。

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

请使用此示例:

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

我们可以通过使用ConfirmButtonExtender轻松做到这一点,

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

它非常简单...

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

如果你想在

服务器端执行一些代码而不实际进行回发,你必须使用 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文件。我更喜欢这种方法。

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

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

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( 代码隐藏

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(网格视图删除按钮中的相同方法。

我认为如果您无法将其与 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

祝你好运!!

你可以

把:

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

ASPX页面中,它执行相同的操作。

如果你想让javascript访问代码后面的方法,你总是可以在RESTful服务中公开它们。

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

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