Сделайте ваше действие "delete" примерно таким:
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
public ActionResult Delete(int id) {
try {
// do what ever here in deleting the record etc
// ...
return null;
} catch (Exception ex) {
TempData[TempDataKeys.ErrorMessage] = "Error in deleting: " + ex.Message;
return RedirectToAction("List");
}
}
В вашем ascx / aspx создайте метод jQuery для переноса вашего вызова ajax на контроллер:
function deleteRecord(recordId) {
if (confirm("Are you sure that you want to delete this record?")) {
var token = $("input[name='__RequestVerificationToken']")[0].value;
url = '<%= Url.Action("Delete", "MyController") %>';
$.post(
url,
{ id: recordId, __RequestVerificationToken: token },
function(data) {
if (!data == "") {
// success - reload/refresh panel control
$('#panel1').load('../Reports/ReportOne');
} else {
// failed - handle error
}
}
);
}
}
Вам нужно будет соответствующим образом поместить ваш AntiForgeryToken, чтобы скрипт мог получить к нему доступ - вам нужна только 1 для всей страницы. Ваша ссылка для удаления должна затем обращаться к JavaScript, а не к действию в контроллере напрямую:
<a href="javascript:deleteRecord('<%=recordId%>');">Delete</a>