说我有一个像这样的控制器动作:
public ActionResult Foo() {
return View(new SomeModel {...});
}
我是否有可能在运行时将此操作返回 JSON 而不是 HTML ?这是一些自动化测试。我找到的唯一方法是修改我的控制器基类来覆盖View(...)
,这样如果某些设置为真,它将返回Json(model)
而不是它通常做的。
我宁愿不这样做,因为它意味着即使在非测试环境中也会针对每个动作进行评估。
答案 0 :(得分:0)
这非常简单......
public ActionResult Foo() {
var model = new SomeModel {...};
if (somePropertyYouWantToCheck)
return Json(model);
return View(model);
}
答案 1 :(得分:0)
我发现MVC功能完全符合我的要求 - 过滤器。在我的例子中,一个全局结果过滤器用一个JsonResult替换ActionResult。
请参阅http://weblogs.asp.net/gunnarpeipman/asp-net-mvc-3-global-action-filters