所以问题如下:我有一个返回json的action方法。我需要做的是使用json构建一些基于它的html。例如,假设我收到一份汽车清单。我想要做的是显示这样的列表,例如:
<div id="cars">
@foreach(var car in Model)
{
<p>car.Name</p>
}
</div>
<div id="pageLinks">
@Html.MyPageLinks(Model.PageInfo)
</div>
目前这是一个视图,我所做的是在控制器中渲染该视图并将整个结果作为json结果返回(check this link)。一切都很好,但有一个主要的缺点 - 动作方法是不可测试的,因为我必须模拟大量的东西,以使 FindPartialView 工作(目前我坚持这个) 。更糟糕的是,我将视图与动作结合起来,即对视图的更改也会损害单元测试,这是不可接受的。
另一方面,使用javascript生成所有html似乎是一个非常糟糕的方法,因为它将是很多原始的javascript和jquery(请记住,即使在我的简化示例中,将有很多js我将放弃测试MyPageLinks的选项,因为所有内容都是js)。
我需要/想要做的只是返回json(只是数据对象,没有html),并且在视图中返回类似于返回json时将应用的模板。
答案 0 :(得分:1)
只需从控制器操作中返回HTML,而不是JSON。因此,将您显示的视图片段放入div中包含的部分内容:
<div id="paginatedCars">
@Html.Partial("Cars")
</div>
然后让您调用的控制器操作返回此更新的部分。