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

Doo*_*ght 3 c# forms asp.net asp.net-mvc-3

我有以下代码,它基本上是一个导致提交发生的复选框.随着DB的任务被删除,需要一些框出现并说"你确定"或类似,以确认删除.

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

这使用Razor语法.

Dar*_*rov 9

您可以使用确认方法:

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

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

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

然后在一个单独的JavaScript文件中:

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

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

  • @Doomsknight,不引人注目意味着您将标记与脚本分开。因此,您的标记的大小会更小,从而减少带宽消耗,并且您的网站加载速度会更快。脚本是缓存在客户端浏览器上的静态资源,因此仅提供一次。 (2认同)