我正在尝试返回一个带有 Jquery 数据表的视图,该视图的操作是使用 ActionLink 从上一页启动的——
@Html.ActionLink("View Audit", "Audit", new { id= Model.ID })
然后使用从模型 ID 传递的 ID 对 Jquery 数据表进行预过滤。
这是我的 JS 文件...(顺便说一下,静态值(例如 10005)在 fnServerParams 中有效,但我需要根据从上一个屏幕中选择的任何模型 ID 来动态设置该值)
var oTable = $('#myAuditTable').dataTable({
"sAjaxSource": "GetAuditLog",
"fnServerParams": function ( aoData )
{ aoData.push({ "name": "ID", "value": 10005 })
},
"aoColumns": [
....
这是我的 Audit.cshtml 页面。
@model IEnumerable<Models.AuditLog>
<table id="myAuditTable" width="100%">
<tr>...</tr>
</table>
并在控制器中
public ActionResult GetAuditLog(int ID){
var logs = db.AuditLog.Where(c => c.ID == ID).ToList();
var result = from c in logs
select new[] { ....
};
return Json(new
{
aaData = result
}, "text/x-json", JsonRequestBehavior.AllowGet);
}
所以我通常会像这样在 MVC 中传递一个参数:
public ActionResult Audit(int ID)
{
return View();
}
但是由于 GetAuditLog 是获取结果的操作,我如何将 int ID 获取到 GetAuditLog 操作以便将过滤器传递给记录,而这些记录又以 JSON 的形式传递。我不能在 ActionLink 中调用 GetAuditLog,因为它的工作是提取 JSON,而不是渲染视图。
我不确定我错过了什么。我已经阅读了这个人的文章,因为它们在集成 ASP.NET 和数据表方面非常全面。 http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part 但找不到完全适合我的问题。这篇文章似乎很接近...... 如何访问 MVC3 中的 JQuery DataTables 插件 aoData 值? 但并不完全适用,因为他似乎正在使用成功传入的参数。
谢谢你的帮助。