我正在试图将jquerygrid插件实现到我的asp.net mvc4应用程序中。但我陷入困境。需要你的帮助。写了所有代码,我只得到了带有json数据的白页。我不知道为什么。
我的观点如下所示:
@model Fancy.Management.Model.User.IndexModel
@{
ViewBag.Title = "Index";
}
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#list").jqGrid({
url:'@Html.Action("Index","User")',
datatype: 'json',
mtype: 'GET',
colNames:['Id','Votes','Title'],
colModel :[
{name:'Id', index:'Id', width:40, align:'left' },
{name:'Votes', index:'Votes', width:40, align:'left' },
{name:'Title', index:'Title', width:200, align:'left'}],
pager: jQuery('#pager'),
rowNum:10,
rowList:[5,10,20,50],
sortname: 'Id',
sortorder: "desc",
viewrecords: true,
imgpath: '/scripts/themes/coffee/images',
caption: 'My first grid'
});
});
</script>
<table id="list" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager" class="scroll" style="text-align:center;"></div>
我的行动方法如下所示:
public ActionResult Index(string sidx, string sord, int? page, int? rows)
{
var jsonData = new
{
total = 1,
page = 1,
records = 3,
rows = new[]{
new{Id=1,cell=new[] {"1","-7","Is this good question?"}},
new{Id=2,cell=new[] {"2","15","Is this really?"}},
new{Id=3,cell=new[] {"3","23","Why is the sky blue?"}}
}
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
我得到的例外情况如下所示:
答案 0 :(得分:1)
您的Index
操作未返回View
,因此您创建的视图永远不会被使用。该操作仅返回JSON数据:
return Json(jsonData, JsonRequestBehavior.AllowGet);
当您请求Index
操作时,这就是您在浏览器中看到JSON数据的原因。
相反,您需要返回一个视图(实例为IndexModel
,您似乎没有在代码中):
return View(someInstanceOfIndexModel);
然后,jqGrid将需要使用不同的操作来获取其JSON数据,因为AJAX请求与最初加载页面的请求不同。像这样:
url:'@Html.Action("IndexData","User")',
当前对Index
的操作方法将被重命名为IndexData
(使用上面的示例)来处理AJAX请求。
最终,此处的操作顺序为:
Index
。Index
返回View
(由任何必要的视图模型填充)。IndexData
,但您可以随意调用它。)Json
网格所需的数据。