Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Json转换为HTML MVC_Javascript_Jquery_Asp.net - Fatal编程技术网

Javascript 将Json转换为HTML MVC

Javascript 将Json转换为HTML MVC,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,大家好,我正在过滤SelectList中的数据,点击它,SelectList中的数据从DB加载。所以,当我单击时,我得到了json格式,我的问题是正确地转换为html。 这是我的控制器,它对应于过滤器 public JsonResult Filter(string category) { var model = from e in db.Errors orderby e.Category w

大家好,我正在过滤SelectList中的数据,点击它,SelectList中的数据从DB加载。所以,当我单击时,我得到了json格式,我的问题是正确地转换为html。 这是我的控制器,它对应于过滤器

 public JsonResult Filter(string category)
    {
        var model = from e in db.Errors
                    orderby e.Category
                    where e.Category == category || category == null || category == ""
                    select e;
        return Json(model, "true",JsonRequestBehavior.AllowGet);
    }
和视图

  <div class="row">
            <b class="text-success">Categories</b>
                @Html.DropDownList("category", new SelectList(ViewBag.Category),new{@class="dropSearch"})

            <b class="text-success">Titles:</b>
            <select>
                <option value="value">Select title</option>
            </select>
            <b class="text-success">Severities:</b>
            <select>
                <option value="value">Select severity</option>
            </select>

            <div class="inner-addon left-addon">
                <i class="glyphicon glyphicon-search"></i>
                <input id="styleInput" type="text" class="form-control" placeholder="Search" />
            </div>

        </div>
    </div>
    <div id="upEl" class="jumbotron">
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Timestamp</th>
                    <th>Category</th>
                    <th>Title</th>
                    <th>Message</th>
                    <th>Severity</th>
                </tr>
            </thead>
            <tfoot>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>@Html.DisplayFor(er=>item.Timestamp)</td>
                        <td>@Html.DisplayFor(er => item.Category)</td>
                        <td>@Html.DisplayFor(er => item.Title)</td>
                        <td>@Html.DisplayFor(er => item.Message)</td>
                        <td>@Html.DisplayFor(er => item.Severity)</td>
                    </tr>
                }

            </tfoot>
        </table>
    </div>

为了做你想做的事,有两种选择

1) 按照@Satpal的建议创建一个部分视图,并让它返回表的HTML,然后用jQuery按照您所做的方式获取它(而不是返回JSON)

2) 返回过滤后的JSON(正如您所做的),并在success函数中对其进行过滤,以便动态构建替换html,并将其放入表中

选项1)将传输更多数据,但编写起来稍微容易一些(因为您已经使用MVC视图重新构建了表)
选项2)wlll只通过网络发送JSON,因此会更轻,但需要您动态构建HTML。

我建议您创建一个局部视图,使用MVC填充它您的JSON看起来像什么,您想用它做什么(添加新行或替换整个表,如代码所示)?是的,我想替换整个表,这是我的结果,我知道如何执行1选项,但我想使用json,我的问题是在表中正确显示它实际上就像for循环一样简单,可以遍历数组中的每个项并构建表内容。对于一个更复杂(但通用)的解决方案,可以尝试这样做,但JS中的For循环不是!
 $('.dropSearch').change(function() {

    var url = '@Url.Action("Filter","Errors")';
    $.get(url, { category: $(this).val() }, function(result) {
        $('.table').html(result);
    }); 
});