1

我正在使用 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");
4

1 回答 1

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");
        }
    });
});
于 2013-06-27T07:29:39.747 回答