2010-06-06 90 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