未调用DataTables插件来显示Json数据

时间:2018-05-12 04:55:31

标签: jquery json asp.net-mvc-5 datatables

我是MVC和JQuery的新手,所以我感谢所有帮助。

我正在尝试使用JQuery DataTables插件查看在MVC视图上从SQL数据库检索的数据。 这是我的控制器动作:

public JsonResult Index()
    {
        var subjects = _db.Subjects.Select(x => new SubjectViewModel()
        {
            SubjectName = x.SubjectName
        }).ToList();

        return Json(subjects, JsonRequestBehavior.AllowGet);
    }

以下是我的观点:

@model IEnumerable.....
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div>
    <table id="mytable" class="display">
        <thead> <tr>
                <th> Subject Name </th>
        </tr> </thead>
     <tbody> </tbody>
</table>
</div>

<script>
    $(document).ready(function () {
        $.noConflict();
        $.ajax({
            url: '@Url.Action("Index", "SubjectViewModel")',
            type: 'Get',
            dataType: 'JSON',
            success: function (response) {
                $('#mytable').DataTable({
                    'aaData': response,
                    'aoColumns': [
                        { 'mData': 'SubjectName ' }
                    ]
                });
            }
        });
    });
</script>

我已将所有javascript引用放在布局页面中,但即使我将它们放在此视图上也没有什么区别。 我得到的结果是原始的json数据,如下所示:

{"SubjectName":"Mathematics"},{"SubjectName":"Accounting"},{"SubjectName":"Science"}

请帮助我理解我缺少的东西,以便dataTable显示Json数据。 感谢。

1 个答案:

答案 0 :(得分:0)

你已经将数据作为模型传递给razor视图,因为@Stephen Muecke说使用循环如下:

@model IEnumerable.....
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div>
    <table id="mytable" class="display">
        <thead> <tr>
                <th> Subject Name </th>
        </tr> </thead>
        <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>item</td>
            </tr>
        }
        </tbody>
    </table>
</div>