【发布时间】:2015-09-03 13:29:13
【问题描述】:
如何使用 ajax 将视图的模型传递给控制器?请看下面的 JS 函数 CreateTable():
我的控制器:
public ActionResult Index()
{
var viewModel = new MyViewModel();
return View(viewModel);
}
[HttpPost]
public ActionResult Index(MyViewModel viewModel)
{
//CODE FOR GETTING STUFF HERE
return View(viewModel);
}
public JsonResult GetResult(JQueryDataTableParamModel param, MyViewModel viewModel)
{
//CODE FOR GETTING STUFF HERE
return Json(new
{
sEcho = param.sEcho,
aaData = viewModel.Data,
iTotalRecords = viewModel.Data.Rows.Count,
iTotalDisplayRecords = viewModel.DisplayRecords
}, JsonRequestBehavior.AllowGet);
}
这是 datatables.net 处理的 ajax 部分:
function CreateTable() {
var table = $('#dataTable').DataTable({
"deferRender": true,
"bServerSide": true,
"sAjaxSource": "@Url.Action("GetResult")",
"fnServerParams": function (aaData) {
//here's my problem: HOW CAN I PUSH MY WHOLE MODEL HERE?
aaData.push({ "name": "MyViewModel", "value": "@Model" });
},
"sPaginationType": "simple_numbers",
"bProcessing": true,
"oLanguage": { "sProcessing": "Loading..." },
"aoColumns": [
{ "sName": "Col1" },
{ "sName": "Col2" },
{ "sName": "Col3" },
{ "sName": "Col3" },
{ "sName": "Col4" },
{ "sName": "Col5" }
]
});
}
我的朋友告诉我,我也可以将整个模型从 ajax 传递到我的控制器,但我不知道该怎么做。请告知执行此操作的更好方法是什么。谢谢你。
【问题讨论】:
-
如果你想在 javascript 中使用它,你需要将你的模型序列化为 JSON。使用 Json.net 你会使用类似
@JsonConvert.SerializeObject(model) -
我正在尝试亚历克斯的回答与您的相同,但我在使用 JsonConvert 时遇到编译错误
-
您需要获取
Newtonsoft.Jsonnuget 包才能识别JsonConvert
标签: c# asp.net asp.net-mvc datatables