Javascript 将Json转换为HTML MVC
大家好,我正在过滤SelectList中的数据,点击它,SelectList中的数据从DB加载。所以,当我单击时,我得到了json格式,我的问题是正确地转换为html。 这是我的控制器,它对应于过滤器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
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);
});
});