【发布时间】:2015-03-03 05:15:02
【问题描述】:
我正在做以下工作:-
- asp.net mvc5 Web 应用程序。
- dataTable jQuery 插件版本 1.10.4
但我注意到,如果我使用 dataTable 插件,我无法从这些 asp.net mvc 功能中受益:-
我不能使用 html 助手。
应用的数据注释将无效。
例如,我有以下脚本来实现 dataTable 插件:-
<script type="text/javascript">
$(document).ready(function () {
$('#myDataTable').dataTable({
"serverSide": true,
"ajax": "Home/AjaxHandler",
"processing": true,
"columns": [
{ "data": "FName" },
{ "data": "LName" },
{ "data": "BDate" }
]
});
});
</script>
还有下面的动作方法:-
public ActionResult AjaxHandler(jQueryDataTableParamModel param)
{
var allCompanies = t.Emps;
var result = allCompanies.Select(c=> new {c.FName, c.LName, c.BDate});
// select new[] { };
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = allCompanies.Count(),
iTotalDisplayRecords = allCompanies.Count(),
aaData = result
},
JsonRequestBehavior.AllowGet);
}
还有以下观点:-
@{
ViewBag.Title = "Home Page";
}
<table id="myDataTable" class="display">
<thead>
<tr>
<th>FName</th>
<th>LName</th>
<th>BDate</th>
</tr>
</thead>
<tbody></tbody>
</table>
还有以下型号:-
namespace testplugins.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Emp
{
public int EmpID { get; set; }
[Display(Name = "First Name")]
public string FName { get; set; }
[Display(Name = "Last Name")]
public string LName { get; set; }
public Nullable<int> DeptID { get; set; }
[DataType(DataType.Date)]
public Nullable<System.DateTime> BDate { get; set; }
public virtual Dept Dept { get; set; }
}
}
例如,现在我不能使用Html.DisplayNameFor(a=>a.FName) 并获取数据注释中定义的名称。而不是我需要手动编写 html 表头标签。
同样对于 Bdate,dataTable 中的值将显示为“/Date(315536524000)/”,所以我什至无法从 DataType.Date 数据注释中受益,如果我要使用 dataTable 插件编辑记录那么Required、stringlenght等数据注解也将不起作用。
请问有人可以就此提出建议吗?我可以将dataTable插件修改为更面向asp.net mvc吗?或者我在上面的代码中做错了什么?
【问题讨论】:
-
您可以按照here所示的方法进行
-
@Aminul 我已经阅读了这个链接,它基本上让我在测试之后写了这个问题。因为正如您从示例中看到的那样,无法使用 html 帮助程序或从数据注释中受益......
标签: jquery asp.net-mvc razor asp.net-mvc-5 datatables