ASP.NET MVC3:提交前的确认框

本文关键字:确认 提交 NET MVC3 ASP | 更新日期: 2023-09-27 18:15:14

我有以下代码,基本上是一个复选框,导致提交发生。当为DB删除任务时,需要出现一些对话框,并说"are you sure"或"like",以确认删除。

<input type="checkbox" 
       onclick="location.href='@Url.Action("Complete", "Tasks", 
                                           new { TaskID = item.TaskID })'" />

ASP.NET MVC3:提交前的确认框

您可以使用确认方法:

<input type="checkbox" onclick="if (confirm('Are you sure?')) { window.location.href = '@Url.Action("Complete", "Tasks", new { TaskID = item.TaskID })'; }" />

或以更不显眼的方式使用jquery:

<input type="checkbox" id="complete" name="complete" data-url="@Url.Action("Complete", "Tasks", new { TaskID = item.TaskID })" />

,然后在单独的javascript文件中:

$(function() {
    $('#complete').click(function() {
        if (confirm('Are you sure?')) {
            window.location.href = $(this).data('url');
        }
    });
});

此外,我强烈建议您在控制器操作上使用另一个动词而不是GET来修改服务器上的状态,例如将任务标记为已完成。PUT、POST和DELETE是很好的选择。在您的例子中,因为您正在修改一个现有的项目,所以POST动词似乎是最自然的。

您可以拦截表单提交事件并请求确认。在此基础上返回true或false以允许提交。类似

 $("#form").submit(function (event) {

   if ( confirm("Are you sure you want to delete"))
       return true;
 else{
     event.preventDefault();
     return false;
      }
   });

可以这样做

<input name="button"  type="submit" value="Delete" class="btn btn-danger cancel" onclick="return confirm('Are you sure?')" />

hemant的解决方案对我不起作用。Moumit的解决方案确实有效,但不是当我将确认函数移动到我页面的javascript文件中的命名函数时-确认按钮显示,但当我点击取消时没有阻止它(当我写这篇文章时,我想知道我是否只需要传递一个事件参数,调用e.p preventdefault(),然后返回true)。

无论如何,这里有另一个例子,在JQuery的一点帮助下,它确实在我的aspnetcore mvc razor页面中工作:

$(function () {
    $('#mySaveButton').click(function (e) {
        e.preventDefault();
        if (confirm('Are you sure?')) {
            $('#myForm').submit();
        }
    });
});

我从一个更完整的示例中改编了这个示例,该示例从头到尾使用一个示例项目:如何使用jquery显示确认对话框