javascript - 数据表 AJAX 从连接表中获取字段

标签 javascript asp.net-mvc datatables

我正在使用 JQuery DataTables 和 AJAX。我很难从通过主键连接的辅助表中获取字段。我唯一能显示的是主键。在这种情况下,关注_id。

型号:问题

    public int question_id { get; set; }
    public int concern_id { get; set; }
    public string question_text { get; set; }
    public string question_answer { get; set; }

模型:关注

    public int concern_id { get; set; }
    public string concern_desc { get; set; }

我希望能够显示关注描述。如果我不在数据表中使用 AJAX,我可以轻松获取我需要的字段。

示例:

@Html.DisplayNameFor(model => model.concern.concern_desc)

Controller :

   public JsonResult GetQuestionRecord()
    {
        bool proxyCreation = db.Configuration.ProxyCreationEnabled;
        try
        {
            db.Configuration.ProxyCreationEnabled = false;
            var list = (from q in db.questions
                        join c in db.concerns on q.concern_id equals c.concern_id
                        select q).ToList();

            return Json(list, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return Json(ex.Message);
        }
        finally
        {

            db.Configuration.ProxyCreationEnabled = proxyCreation;
        }

    }

查看:

<table id="DataTable" class="display" style="width:100%">
<thead>
    <tr>
        <th>ConcernID</th>
        <th>QuestionText</th>
    </tr>
</thead>
<tbody></tbody>

JavaScript:

$(document).ready(function () {
    GetQuestionRecord();
});

var GetQuestionRecord = function () {
    $.ajax({
        type: "Get",
        url: '@Url.Action("GetQuestionRecord","questions")',
        success: function (response) {
            BindDataTable(response);
        }
    });
}     
var BindDataTable = function (response) {
    $("#DataTable").DataTable({
        "aaData": response,
        "aoColumns": [
            { "mData": "concern_id" },
            { "mData": "question_text" },
        ]
    });
}

我应该在“mData:concern_id”中更改什么才能显示“concern_desc”。我尝试过:

{ "mData": "concern_desc" }

还有

{ "mData": "concern.concern_desc" }

最佳答案

第 1 步:将 Controller 中的 LINQ 查询更改为此。

        var list = (from q in db.questions
                        join c in db.concerns on q.concern_id equals c.concern_id
                        select new
                        {
                            question_id = q.question_id,
                            concern_id = q.concern_id,
                            question_text = q.question_text,
                            question_answer = q.question_aswer,
                            concern_desc = c.concern_desc
                        }).ToList();

第 2 步:将 BindDataTable JS 代码更改为。

var BindDataTable = function (response) {
    $("#DataTable").DataTable({
        "aaData": response,
        "aoColumns": [
            { "mData": "concern_id" },
            { "mData": "question_text" },
            { "mData": "concern_desc" }
        ]
    });

关于javascript - 数据表 AJAX 从连接表中获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45949224/

相关文章:

c# - 如何使用mshtml在textarea中输入文本

javascript - 如何将数组数据传递到 React 中的另一个页面?

javascript - 设置 kendoMaskedDatePicker 上的最短日期

javascript - Yeoman 生成器添加新文件生成现有项目

asp.net-mvc - Unity.Mvc3 与 Unity.Mvc

asp.net-mvc - 在 Razor View 中,我怎样才能拥有诸如 <span id ='cat@MYID'/> 之类的控件?

jquery - 带有 yadcf 插件的 DataTables - 如何覆盖发送的参数

jquery - oTable.fnFilter 不起作用

c# - 在 Visual Studio 中使用自定义方法时在 View 名称上显示红色下划线

javascript - Twig-Template 中的数据表中的静态子行(附加信息)