ASP.NET MVC BaseController动态设置MasterPage文件

时间:2010-06-06 08:09:30

标签: asp.net-mvc master-pages

我已经构建了一个基本控制器,我的所有控制器都继承了这个控制器,并且我已经设置好它,以便它检查浏览器类型并动态返回相应的MasterPageFile。

我想知道这是否是一种有效的方法,或者我是否应该采用另一种方式进行优化。

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

2 个答案:

答案 0 :(得分:1)

恕我直言,这是一个非常好的方法:基于请求参数(或者更具体地说,在这种情况下是HTTP标头),控制器决定渲染哪个视图。

答案 1 :(得分:0)

您可能需要在ViewPage中探索这样做,即创建一个BaseViewPage而不是在Controller中执行它?

已添加:这可能有所帮助:

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