ASP.NET MVC BaseController для динамической установки файла MasterPage - PullRequest
3 голосов
/ 06 июня 2010

Я создал базовый контроллер, от которого наследуются все мои контроллеры, и настроил его так, чтобы он проверял тип браузера и возвращал соответствующий 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

Также, если кому-то интересно, я использую информацию , найденную здесь , для улучшения моих Request.Browser.IsMobileDevice проверок.

Используемый мной файл .browser может быть найден здесь .

Ответы [ 2 ]

1 голос
/ 06 июня 2010

ИМХО, это очень хороший подход: на основе параметров запроса (или, в частности, заголовков HTTP в этом случае) контроллер решает, какое представление следует отображать.

0 голосов
/ 06 июня 2010

Вам может понадобиться изучить это в ViewPage, то есть создать BaseViewPage вместо того, чтобы делать это в контроллере?

Добавлено: это может помочь:

Как использовать динамическую главную страницу в ASP.NET MVC RC 1.0

...