【发布时间】:2018-08-07 07:07:59
【问题描述】:
我在 MVC 中使用 Datatables.mvc 进行 Crud 操作。
对于编辑,我将 ids 发送到渲染 _EditPartial 以进行编辑的操作。
在控制器检查中
If(Request.IsAjaxRequest)
// go to partialview...
但它总是错误的! 我检查了每个 jquery 库版本,例如 validate、unobtrusive-ajax 和......但仍然无法正常工作。 我检查了请求的标头,没有
X-Requested-With
Cshtml:
var assetListVM;
$(function () {
assetListVM = {
dt: null,
init: function () {
dt = $('#assets-data-table').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.10.19/i18n/Persian.json'
},
"serverSide": true,
"processing": true,
"ajax": {
"url": "@Url.Action("GetDepartments", "BaseInfo")",
},
"columns": [
{ "title": "نام دپارتمان", "data": "deptname", "searchable": true },
{ "title": "کد دپارتمان", "data": "deptCode", "searchable": true },
{ "title": "عکس", "data": "deptPic", "searchable": false, "sortable": false, },
{
"title": "actions",
"data": "deptId",
"searchable": false,
"sortable": false,
"render": function (data, type, full, meta) {
return '<a href="@Url.Action("EditDepartment", "baseinfo")?id=' + data + '" class="btn btn-app"><i class="fa fa-edit"></i> Edit</a> <a href="@Url.Action("DetailsDepartment", "BaseInfo")?id=' + data + '" class="btn btn-app"><i class="fa fa-file-text"></i> Details</a> <a href="@Url.Action("DeleteDepartments", "BaseInfo")?id=' + data + '" class="btn btn-app"><i class="fa fa-trash"></i> Delete</a>';
}
}
],
"lengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]],
});
},
refresh: function () {
dt.ajax.reload();
}
}
我从一个示例中复制了这些代码,在该示例中一切正常,并且具有 X-Requested-With。 我该怎么办?谢谢。
【问题讨论】:
-
您是否在视图中包含了
jquery.unobtrusive-ajax.js(或缩小的jquery.unobtrusive-ajax.min.js)文件?还要检查<add key="UnobtrusiveJavaScriptEnabled" value="true"/>是否在配置文件中可用。 -
@TetsuyaYamamoto 是的,我有。所有 js 文件都包含在 web 配置中,添加密钥已添加,我已经为此工作了 2 天,但没有弄清楚!
-
jQuery 默认将
X-Requested-With设置为XMLHttpRequest用于 AJAX 回调。如果标题丢失,您可能应该添加ActionFilterAttribute,它同时设置HttpContext.Request.Headers["X-Requested-With"]和IsAjaxRequest。 -
@TetsuyaYamamoto ,你有这个属性的例子或实现吗?
标签: asp.net-mvc datatables asp.net-ajax