MVC控制器返回JSON列表

本文关键字:列表 JSON 返回 控制器 MVC | 更新日期: 2023-09-27 18:06:27

我试图返回一个JSON列表在我的控制器。不知道我哪里出错了。任何帮助都将非常感激。我正在尝试实现一个网格在网上找到。

这是我的控制器:

//[HttpPost]
        public JsonResult JqueryTest()
        {
            var estimateDetails = db.EstimateDetail
                .Include(x => x.EstimationItem)
                .Include(x => x.EstimateHeader);
            return Json(estimateDetails, JsonRequestBehavior.AllowGet);
        }

这是我的观点:

@model IEnumerable < EstimationTools.Models.Entities.EstimateDetail >

    ViewBag.Title = "JqueryTest";
}
<h2>JqueryTest</h2>
<html lang="en">
<head>
    <!-- The jQuery library is a prerequisite for all jqSuite products -->
    <script type="text/ecmascript" src="../../../js/jquery.min.js"></script>
    <!-- We support more than 40 localizations -->
    <script type="text/ecmascript" src="../../../js/trirand/i18n/grid.locale-en.js"></script>
    <!-- This is the Javascript file of jqGrid -->
    <script type="text/ecmascript" src="../../../js/trirand/jquery.jqGrid.min.js"></script>
    <!-- This is the localization file of the grid controlling messages, labels, etc.
    <!-- A link to a jQuery UI ThemeRoller theme, more than 22 built-in and many more custom -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <!-- The link to the CSS that the grid needs -->
    <link rel="stylesheet" type="text/css" media="screen" href="../../../css/trirand/ui.jqgrid-bootstrap.css" />

    <script>
        $.jgrid.defaults.width = 780;
        $.jgrid.defaults.styleUI = 'Bootstrap';
    </script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <meta charset="utf-8" />
    <title>jqGrid Loading Data - JSON</title>
</head>
<body>
    <div style="margin-left:20px">
        <table id="jqGrid"></table>
        <div id="jqGridPager"></div>
    </div>
    <script type="text/javascript">

        $(document).ready(function () {
            $("#jqGrid").jqGrid({
                url: 'EstimationTool/plugins/jqGrid',
                datatype: "json",
                colModel: [
                   { label: 'Estimate', name: 'Estimate', width: 75 },
                   { label: 'Contingency', name: 'Contingency', width: 90 },
                   { label: 'Comment', name: 'Comment', width: 100 },
                   { label: 'Subactivity', name: 'EstimationItem.Subactivity', width: 100 },
                   { label: 'EstimationArea', name: 'EstimationItem.Area.EstimationArea', width: 100 },
                   { label: 'Description', name: 'EstimationItem.GeneralActivity.Description', width: 100 }
                   // sorttype is used only if the data is loaded locally or loadonce is set to true
                ],
                viewrecords: true, // show the current page, data rang and total records on the toolbar
                width: 780,
                height: 200,
                rowNum: 30,
                loadonce: true, // this is just for the demo
                pager: "#jqGridPager"
            });
        });
    </script>
</body>
</html>

MVC控制器返回JSON列表

首先…斯蒂芬。vakil状态,你的url中有一个错误,因为你指向一个名为"jqGrid"的操作:

 url: 'EstimationTool/plugins/jqGrid'

通常的语法是:'{Controller}/{Action}/'

在您的例子中,操作名称是上文所述的"JqueryTest"。我不知道控制器的名字,但我希望你们已经有了概念。像这样:

url: 'YourController/JqueryTest'

另一方面,在你的Action中,你应该返回一个列表…因此,只需在查询的末尾添加.ToList()或将其附加到参数:

return Json(estimateDetails.**ToList()**, JsonRequestBehavior.AllowGet);

认为,