【问题标题】:ASP.NET MVC3: Confirmation Box before submittingASP.NET MVC3:提交前的确认框
【发布时间】:2011-11-21 10:33:19
【问题描述】:

我有以下代码,它基本上是一个导致提交发生的复选框。 当数据库的任务被删除时,需要某个框出现并说“你确定”或类似的内容,以确认删除。

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

这使用 Razor 语法。

【问题讨论】:

    标签: c# asp.net forms asp.net-mvc-3


    【解决方案1】:

    您可以使用confirm 方法:

    <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 动词似乎最自然。

    【讨论】:

    • 哦,我看到你添加了 Jquery 方式。这是首选吗?为什么? - 你说的不引人注目是什么意思。另外,我将如何阻止它被勾选。我认为这是直截了当的,但我无法让它工作。
    • @Doomsknight,不引人注目意味着您将标记与脚本分开。因此,您的标记大小更小,带宽消耗更少,您的网站加载速度更快。脚本是缓存在客户端浏览器上的静态资源,因此它们只被提供一次。
    • 酷,那我就用 Jquery 吧,猜它没有我想的那么糟糕。如果单击取消,不勾选它怎么办? :)
    • @Doomsknight,你也可以测试一下:if ($(this).is(':checked') &amp;&amp; confirm('Are you sure?')) { ... }
    • 不显眼意味着即使用户的浏览器中没有启用 javascript,您的网站也能继续工作
    【解决方案2】:

    您可以拦截表单提交事件并要求确认。基于该返回 true 或 false 以允许提交。 类似

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

    【讨论】:

    • 我有几个按钮button type="submit",怎么办,只适用于一个按钮?
    【解决方案3】:

    这样就可以了

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-15
      • 2012-03-25
      • 2023-03-07
      • 2011-09-21
      • 2011-09-23
      • 1970-01-01
      相关资源
      最近更新 更多