【发布时间】:2019-10-20 19:49:07
【问题描述】:
我在 ASP.NET MVC 应用程序中使用 DataTables.js。我想在一个动作中处理服务器上的事情,但似乎没有数据从视图中的表单发送到动作。我已经构建了一些代码来测试这个例子:https://www.c-sharpcorner.com/article/using-datatables-grid-with-asp-net-mvc/
我有一个简单的看法:
<body>
<div class="container">
<br />
<div style="width:90%; margin:0 auto;">
<table id="demoGrid" class="table table-striped table-bordered dt-responsive nowrap" cellspacing="0">
<thead>
<tr>
<th>CustomerID</th>
<th>CompanyName</th>
<th>ContactName</th>
</tr>
</thead>
</table>
</div>
</div>
</body>
DataTable 是这样设置的:
$(document).ready(function () {
$("#demoGrid").DataTable({
"processing": true,
"serverSide": true,
"filter": true,
"orderMulti": false,
"pageLength": 5,
"ajax": {
"url": "/MOF2/Demo/LoadData",
"type": "POST",
"datatype": "json"
}
});
});
该动作还没有包含太多内容:
public ActionResult LoadData()
{
var draw = Request.Form.GetValues("draw").FirstOrDefault();
var start = Request.Form.GetValues("start").FirstOrDefault();
var length = Request.Form.GetValues("length").FirstOrDefault();
return View();
}
在阅读了https://datatables.net/ 和上面提到的示例之后,我希望能够在这里获得一些值。例如,我预计length 是 5。但我什么也没得到。例如Request.Form.GetValues("length") 为空。如果我检查 Request.Form.AllKeys 我得到一个空字符串。什么会导致这种情况? JavaScript 和 Ajax 发送表单数据需要什么才能被Request.Form.GetValues() 读取?
注意:我已经下载了上面示例的评论中提到的示例项目,它按预期工作。我还从该项目中删除了示例中未使用的大部分代码,它仍然有效。不过,我真的找不到示例项目和我的项目之间的区别。示例项目可以在这里找到:https://github.com/saineshwar/DataTablesGridExample
【问题讨论】:
-
这是一个表单帖子还是数据在请求正文中
-
@Shantanu 我不完全确定这意味着什么以及如何回答这个问题。
-
那么当您单击下一步(分页)时,您会得到任何值吗?
-
@HastaTamang 不。我相信我应该在页面加载时立即获取值,并且当我更改页面中的某些内容时,例如显示多少行 arr 或排序顺序。在我在问题中提到的示例项目中,我在加载页面和更改页面中的某些内容时都获得了值。我的直觉告诉我,我需要更改一些设置,以便在发出 ajax 请求时包含表单数据。我不知道是什么。
-
您能否在网络选项卡中验证您的视图是否向您的操作方法发出表单请求?还要检查您是否有任何控制台错误
标签: c# ajax asp.net-mvc datatables