我正在尝试使用jTable将整个模型从View传递到Controller。 这是视图的代码
我有一个过滤条件,基于该条件将加载表格。 在选择时说出ModelId和ModelName的DropdownList,然后点击一个按钮,下面的函数就会执行。
<script type="text/javascript">
function GetModels() {
var model = {
ModelId:$("#ModelId").val(),
ModelName:$("#ModelName").val(),
ModelAge:$("#ModelAge").val()
};
$(document).ready(function () {
$('#PersonTableContainer').jtable({
title: 'Table of Models',
actions: {
listAction: '/Controller/ActionName'
},
fields: {
ModelName: {
title: 'ModelName',
width: '30%',
list: false
},
ModelId: {
title: 'ModelId',
width: '30%',
key: true,
create: false,
edit: false
}
ModelAge: {
title: 'ModelAge',
width: '30%',
create: false,
edit: false
}
}
});
$('#PersonTableContainer').jtable('load', { ModelName: model });
});
}
以下是控制器的代码。
public JsonResult GetAppropriateModel( ModelName ModelName)
{
try
{
FillAppropriateModel(ModelName);
}
catch(Exception e)
{
return Json(new { Result = "Error", Message=e.Message });
}
}
我是AJAX的新手,我面临一个问题,在返回的模型中为null,但是如果我导致正常的提交按钮事后处理,那么模型将被保留..我用Google搜索并获得了他们通过离散的示例元素而不是整个模型。
- 编辑 -
这是我提到的链接。
http://www.jtable.org/Demo/Filtering
请帮助。
感谢。
答案 0 :(得分:2)
由于某些原因,当jTable发送它们时,MVC处理程序不能正确解码模型对象。我发现在jTable中设置contentType可以解决这个问题。在您的jTable定义中,添加以下内容:
ajaxSettings: {
contentType: "application/json; charset=utf-8"
}
然后,您必须在发送时将字符串化为字符串:
$('#PersonTableContainer').jtable('load', JSON.stringify({ ModelName: model }));