【问题标题】:Asp.net mvc4 jqueryGrid not show upAsp.net mvc 4 jquery Grid不显示
【发布时间】:2013-07-27 18:38:52
【问题描述】:

我正在尝试在我的 asp.net mvc4 应用程序中实现 jquerygrid 插件。但我卡住了。需要你的帮助。编写了所有代码,我只得到了带有 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);
    }

我得到的异常如下所示:

【问题讨论】:

    标签: jquery json asp.net-mvc-4 jqgrid


    【解决方案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 请求。

    最终,这里的操作顺序是:

    1. 浏览器请求Index
    2. Index 返回 View(由任何必要的视图模型填充)。
    3. 由于相关视图包含 JavaScript 代码,该代码将由浏览器执行。
    4. JavaScript 代码向另一个操作发出第二个请求(我将其称为 IndexData,但您可以随意调用它)。
    5. 其他操作返回 Json 以及网格所需的数据。
    6. 客户端 JavaScript 代码接收数据并填充网格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多