0

所以问题如下:我有一个返回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 就会应用。

4

1 回答 1

1

只需从控制器操作返回 HTML,而不是 JSON。因此,将您显示的视图片段放入包含在 div 中的部分内容中:

<div id="paginatedCars">
    @Html.Partial("Cars")
</div>

然后让您正在调用的控制器操作返回此更新的部分。

于 2012-09-12T09:25:20.643 回答