2012-03-07 79 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 
     ); 

但如果你實際上是設置了「接受型」頭,這應該相當多的工作開箱

相關問題