我正在尝试在MVC3中实现一个通用控制器来返回各种JSON提要,例如 -
public class AjaxController : Controller
{
public ActionResult Feed1()
{
ViewBag.Json = LogicFacade.GetFeed1Json();
return View();
}
public ActionResult Feed2()
{
ViewBag.Json = LogicFacade.GetFeed2Json();
return View();
}
}
这个类有30多个方法,问题是这需要为每个写出ViewBag.Json的Controller方法(叹气)实现一个IDENTICAL视图。
我认为这是一个路由问题,但我正在努力解决这个问题。以下不起作用 -
因此,这里的目标是维护一个View文件,但保持此类具有由路由调用的单独方法,而不是一个糟糕的switch语句实现。
任何帮助表示感谢。
答案 0 :(得分:3)
使用相同的视图,只需指定名称即可。您可以存储在控制器的视图文件夹中,如果仅由一个控制器使用,或者如果由多个控制器使用,则存储在共享视图文件夹中。
return View("SharedJsonView");
另一个可能更好的解决方案是创建自己的结果 - 可能是从JsonResult派生的,可能直接来自ActionResult - 它可以创建您需要的JSON响应。请查看http://www.codeplex.com/aspnet上JsonResult的源代码,了解有关如何执行此操作的建议。