【发布时间】:2016-05-18 20:07:20
【问题描述】:
我对 mvc 中的 jQuery Datatables 插件有疑问。
我有一个带有 ajax 形式的视图,它可以在 sumbit 上加载带有表格的部分视图。
查看
...
@using (Ajax.BeginForm("MyAction", "MyController", new AjaxOptions { UpdateTargetId = "myList" }, new { @id = "searchForm", @class = "form-horizontal" }))
{
// some html
}
<div id="myList">
</div>
带表格的局部视图
@model IEnumerable<Item>
<table id="productsTable">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(x => item.Name)</td>
<td>@Html.DisplayFor(x => item.Description)</td>
<td>
<div>
<a href="@Url.Action("Edit", "MyController", new {id = item.Id})">
</a>
<a href="@Url.Action("Delete", "MyController", new {id = item.Id})" >
</a>
</div>
</td>
</tr>
}
</tbody>
</table>
问题是如果我放脚本
$(document).ready(function() {
$('#productsTable').DataTable();
});
在主视图中它将不起作用,因为部分视图由 ajax 加载。如果我将此脚本放在部分视图中,它将延迟工作:首先用户会看到简单的 html 表,然后它将被转换为数据表。
有什么方法可以用数据表更正加载部分视图? 感谢您的建议。
【问题讨论】:
-
如果你把
$('#productsTable').DataTable();放在$(document).ready(function(){}之外呢? -
同样的问题 - 它会显示简单的 html 表,然后转换为数据表
-
尝试使用@{Html.RenderAction("MyAction", "MyController");} 渲染你的局部视图
-
进展如何?你解决了吗?
标签: jquery ajax asp.net-mvc