【问题标题】:MVC 4 action link popup box confirmation for delete?MVC 4 动作链接弹出框确认删除?
【发布时间】:2015-07-27 06:08:20
【问题描述】:

单击操作链接执行删除时,执行确认弹出的最佳方法是什么?目前,当我按下删除操作链接时,它将直接删除。无论如何要执行一个弹出确认框来删除? 谢谢!

我的观点:

  <td>
      @Html.ActionLink("Delete", "SURV_Question_Delete", "SURV_Question", new { Question_ID = Model[i].Question_ID }, null)
  </td>

我的控制器:

 public ActionResult SURV_Question_Delete(int Question_ID)
        {

            var query = from r in db.SURV_Question_Ext_Model.ToList()
                        where r.Qext_Question_ID == Question_ID
                        select r;

            foreach(var item in query)
            { 
                db.SURV_Question_Ext_Model.Remove(item);
                db.SaveChanges();
            }

            return RedirectToAction("SURV_Main_Edit", "SURV_Main", new { id = surveyId });
        }

【问题讨论】:

  • 首先,删除操作不应该是 GET,而应该是 POST。使用 javascript/jquery 处理.click() 事件(或更准确地说是表单的.submit() 事件)并显示确认/弹出窗口并根据返回值取消提交
  • @StephenMuecke 有任何代码示例供我参考吗?谢谢。
  • 检查分析器可能会帮助您找到所需的内容

标签: javascript c# asp.net-mvc-4 popup jquery-ui-dialog


【解决方案1】:

首先,您的删除操作应该是 POST,而不是 GET。您的修改数据,不希望将其添加到浏览器历史记录中,或允许在地址栏中输入 url(该项目可能已被删除)

将您的 html 更改为

@using (Html.BeginForm("SURV_Question_Delete", "SURV_Question", new { Question_ID = Model[i].Question_ID }))
{
  @Html.AntiForgeryToken()
  <input type="submit" value="delete" />
}

并使用[HttpPost][ValidateAntiForgeryToken] 属性装饰方法。

然后添加一个脚本

$('form').submit(function() {
  // Modify the following to use you jquery-ui-dialog, but for testing purposes
  if (!confirm("Are you sure want to delete record") { 
    return false; // cancel the submit if the user clicked the Cancel button
  }
});

【讨论】:

    【解决方案2】:

    试试这样,在调用javascript函数的链接上添加在线确认。

     @Html.ActionLink("Delete", "SURV_Question_Delete", "SURV_Question",
     new { Question_ID = Model[i].Question_ID, onclick = "return 
                                                DeleteConfirm()" }, null)
    
    
     function DeleteConfirm() 
        {
            if (confirm("Are you sure want to delete record"))
                return true;
            else
                return false;        
        }
    

    你也可以试试这个

    @Html.ActionLink("Delete", "SURV_Question_Delete", "SURV_Question",
         new { Question_ID = Model[i].Question_ID,  onclick="return confirm('Are you sure?');"},null);
    

    【讨论】:

    【解决方案3】:

    您还可以执行以下操作,这将显示确认框 要删除的值,在 删除。

    @Html.ActionLink("Delete Subject", "DeleteSubject", "Subjects", new { SubjectId = _item.SubjectMsId }, new { onClick = "return confirm('Are you sure, you want to Delete the Subject : "+ @_item.SubjectName+" ?')" })

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多