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