使用mvc3中的弹出窗口删除视图

时间:2013-06-27 06:12:37

标签: jquery asp.net-mvc-3

我正在使用jquery代码弹出我的视图。我希望​​通过此弹出窗口删除数据...但是通过使用以下代码,只有弹出窗口没有执行删除操作,jquery代码如下所示。

$(document).ready(function (){
$('.del').click(function (e) {
    e.preventDefault();
    custom_confirm('pleaseNote:',
        function () {
            var sel = $(this).attr('href');

            $.ajax({
                url: '/default1/Delete/',
                type: 'POST',
                data: { id: sel },
                success: function (result) {
                    $(this).remove();
                }, error: function (result) {
                    alert("error");
                }
            });
        });
});
function custom_confirm(prompt, action, title) {
      $("#confirm").dialog({
        buttons: {
            'Proceed': function () {
                $(this).dialog('close');
                $('#confirm').dialog({ modal: true });
                action();
            },
            'Cancel': function () {
                $(this).dialog('close');
            }
        }
    });
}

})
我的观点代码是

@Html.ActionLink("Delete","Delete",new { id = item.studentID }, new { @class="del"})
                  <div id="confirm" style="display: none"></div>

和控制器操作是

[HttpPost]       
    public ActionResult DeleteConfirmed(int id=0)
    {
        student student = db.students.Find(id);
        if (student == null)
        {
            return HttpNotFound();
        }
        db.students.Remove(student);
        db.SaveChanges();
        return RedirectToAction("Index");

1 个答案:

答案 0 :(得分:0)

您在这里选择href属性:

var sel = $(this).attr('href');

然后在AJAX请求中将其作为id参数传递:

data: { id: sel }

现在查看您的DeleteConfirmed控制器操作,它期望id参数是一个整数值。但href不是整数。这就是你永远不会调用你的控制器动作的原因。

行动中的$(this)也不是你想象的那样。

所以这是你可以继续的方式:

custom_confirm('pleaseNote:', function () {
    var url = $('.del').attr('href');

    $.ajax({
        url: url,
        type: 'POST',
        success: function (result) {
            $(this).remove();
        }, error: function (result) {
            alert("error");
        }
    });
});