2012-03-07 51 views
2

我一直在玩ASP.NET MVC 4 beta,我注意到两个控制器:一个(web api控制器)返回数据,另一个(默认控制器)返回视图。创建一个控制器来返回数据和视图

我知道,即使HTML对于像JSONXML资源的类型的表示,我没有一个单独的控制器只返回HTML表示个人很开心。

我想要实现的是有一个单一的控制器,将返回视图和数据。但我很困惑,这是一个最好的选择,如果它是如何实现这个没有太多的代码。

我可以扩展ApiController,使它既能返回视图,也能返回数据,或者我可以创建一个通用控制器,通过将请求传递给基于"accept-type"的特定控制器类型。

我正在寻找您的宝贵建议。

回答

3

编写一个呈现HTML的格式化程序。

+0

感谢您的回复,做ü有任何想法如何使用Razor视图引擎中自定义的html格式化程序? – VJAI 2012-03-07 12:10:07

+1

我想你必须像这样运行你自己的剃须刀发动机:http://www.fidelitydesign.net/?p=208 – 2012-03-07 13:13:15

1

官方Contact Manager example描述了如何使用格式化程序在单个控制器中的以下任何html/json/png/vcf中进行渲染。

如果你想在url中显式请求,你必须添加有效的路由。

config.Routes.MapHttpRoute( 
      "Default", // Route name 
      "{controller}/{id}/{ext}", // URL with parameters 
      new { id = RouteParameter.Optional, ext = RouteParameter.Optional } // Parameter defaults 
     ); 

但如果你实际上是设置了“接受型”头,这应该相当多的工作开箱

相关问题