Razor MVC在删除之前获取确认消息

时间:2016-07-22 15:15:05

标签: c# asp.net-mvc visual-studio razor

首先,我不想使用以下内容:

mousePos.y

因为我希望能够编辑按钮,编辑布局等。

我的问题是:

  • 当我点击要删除的内容时,它立即删除,而不是停留在Javascript中

  • 之后我应该在“是”按钮中放置什么代码,以便恢复帖子。

我的观点:

"onclick="return confirm('are you sure you wanna delete?');" 

我的对话框:

@using (Html.BeginForm("ActionAppointment", "Client"))
{
  @foreach (var item in Model)
  {
    .... (more columns here )
    <td align="center">
         <button type="submit" name="ToEditID" title="Editar" value="@item.ID">
         <span class="glyphicon glyphicon-pencil" style="color:blue" aria-hidden="true"></span>
         </button>
         <button type="submit" name="ToDeleteID" id="DeleteID" title="Apagar" value="@item.ID">
         <span class="glyphicon glyphicon-erase" style="color:red " aria-hidden="true"></span>
         </button>
        </td>                  
  }
}

我的javascript代码:

<div id="dialog" title="Confirmation Required">
                Are you sure you wanna delete?
            </div>

我的控制器有以下行动:

         $("#dialog").dialog({
        modal: true,
        autoOpen: false,
        title: "Confirmation",
        width: 350,
        height: 160,
        buttons: [
        {
            id: "Yes",
            text: "Yes",
            click: function () {
              //How to resume the post here ?
            }
        },
        {
            id: "No",
            text: "No",
            click: function () {
                $(this).dialog('close');
            }
        }
        ]
    });
    $("#DeleteID").click(function (e) {
        e.preventDefault();
        $('#dialog').dialog('open');
    });

}

}

感谢您的时间。

EDITED:将js更改为类而不是按钮的id工作。现在只需要恢复帖子,想法? :P

1 个答案:

答案 0 :(得分:1)

您的代码中存在许多问题,就像现在一样。首先,你的删除按钮位于foreach循环中,你给它们ID,所以基本上你最终会在页面上有多个具有相同id的项目。您需要完全删除id属性并将您的javascript代码基于类。例如:

<button type="submit" name="ToDeleteID" class="js-delete" title="Apagar" value="@item.ID">
    <span class="glyphicon glyphicon-erase" style="color:red " aria-hidden="true"></span>
</button>

然后有以下内容:

$(".js-delete").click(function (e) {
    e.preventDefault();
    $('#dialog').dialog('open');
});

第2期,你的对话框div的ID是&#34; delete-dialog&#34;但是您将引导程序对话框处理程序附加到具有ID&#34;对话框&#34;的内容中。因此,更改对话框div id:

<div id="dialog" title="Confirmation Required">
    Tem a certeza que pretende eliminar a conta?
</div>

修复后,您需要以某种方式定义YES按钮应提交到删除URL。最好的方法是通过某种AJAX调用。因此,您需要将YES按钮的click事件处理程序的代码修改为:

click: function () {
    $.ajax({
       url: '@Url.Action("ClientAction", "ControllerName")?EditID=' + editId + '&DeleteID=' + deleteId,
       type: "GET",
       cache: false,
       success: function () {
           // Some logic to delete the html of the deleted item from the page...
       }
    });
}

请注意,您必须传入控制器操作所期望的参数(EditID和DeleteID)。我会留给你,但我建议你研究一下data-(data-dash)属性的用法。祝你好运......