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