我把视图中的数据绑定到控制器上,这样以后我就可以对数据做我想做的事情了。在我的视图中,我使用dataTable
和@Html.EditorForModel()
来呈现我的视图。
视图
<form action="xx" method="POST">
<table id="myTable" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th></th>
<th>
@Html.DisplayNameFor(model => model.Field1)
</th>
<th>
@Html.DisplayNameFor(model => model.Field2)
</th>
<th>
@Html.DisplayNameFor(model => model.Field3)
</th>
</tr>
</thead>
<tbody>
@if (Model != null)
{
@Html.EditorForModel()
}
</tbody>
<tfoot></tfoot>
</table>
<input type="submit" value="submit" />
</form>
脚本
$("#myTable").dataTable({
searching: false,
ordering: false,
responsive: true,
"bLengthChange" : false,
"pageLength": 20,
"bStateSave": true
});
主计长
[HttpPost]
public ActionResult MyAction(List<MyModel> MyListModel)
如果dataTables
中的数据不超过1页,则此方法非常有效。如果超过1页,则My Controller要么只能接收第一页的List Data
,要么什么也不接收(null)
如何将DataTables
中的所有数据从视图绑定到控制器?此绑定应包括所有页面,而不仅仅是第一个页面
5条答案
按热度按时间rbl8hiat1#
我不确定你是如何触发数据更新的,所以假设它是一个按钮,下面应该工作:
编辑1:
根据this对How to post data for the whole table using jQuery DataTables的回答,如果您决定使用表单,请使用以下内容:
62o28rlo2#
因为你不想使用 AJAX 使用Javascript Source Data,把你的模型传递给视图,序列化它,并把它作为你的源代码
uz75evzq3#
使用DataTables,只有当前页面数据存在于DOM中。如果您提交表单,只有当前页面数据会被提交回服务器。一个解决方案是通过 AJAX 提交数据:
yyyllmsg4#
您需要使用data()方法来获取整个表的数据:
aemubtdh5#
请通过以下链接
https://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part