2010-06-06 92 views
3

我已經構建了一個基本控制器,我的所有控制器都繼承自我的設置,因此它可以檢查瀏覽器類型並在運行時返回相應的MasterPageFile 。ASP.NET MVC BaseController動態設置MasterPage文件

我想知道這是否是一種有效的方法來做到這一點,或者我應該以另一種方式進行優化。

Public Class BaseController : Inherits System.Web.Mvc.Controller 

    Protected Overrides Function View(ByVal viewName As String, ByVal masterName As String, ByVal model As Object) As System.Web.Mvc.ViewResult 

     If Request.Browser.IsMobileDevice Then 
      Return MyBase.View(viewName, "Mobile", model) 
     Else 
      Return MyBase.View(viewName, "Site", model) 
     End If 

    End Function 

End Class 

此外,如果有人有興趣,我現在用的信息found here來提高我的Request.Browser.IsMobileDevice檢查。

我使用的.browser文件可能是found here

回答

1

恕我直言,這是一個很好的方法:根據請求參數(或更具體地說HTTP在這種情況下頭)控制器決定哪個視圖呈現。

0

您可能需要探索在ViewPage中這樣做,即創建一個BaseViewPage,而不是在Controller中執行此操作?

新增:這可能幫助:

How to use dynamic master page in ASP.NET MVC RC 1.0

+0

感謝您的支持。這裏的答案几乎和我上面所做的一樣:http://stackoverflow.com/questions/630833/how-to-use-dynamic-master-page-in-asp-net-mvc-rc-1 -0/2281059#2281059 – 2010-06-06 18:43:01