views:

65

answers:

2

I've built a Base Controller that all of my Controllers inherit from, and I've got it setup so that it checks the browser type and returns the appropriate MasterPageFile on the fly.

I'm wondering if this is an efficient way to do this or if I should optimize it another way.

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

Also, if anyone is interested, I am using the information found here to enhance my Request.Browser.IsMobileDevice checks.

The .browser file I'm using can be found here.

A: 

You may need to explore doing this in the ViewPage, ie create a BaseViewPage rather than doing it in the Controller?

Added: This might help:

http://stackoverflow.com/questions/630833/how-to-use-dynamic-master-page-in-asp-net-mvc-rc-1-0/692231#692231

Mark Redman
Thanks for this. The answer here is pretty much exactly the same as what I did above: http://stackoverflow.com/questions/630833/how-to-use-dynamic-master-page-in-asp-net-mvc-rc-1-0/2281059#2281059
rockinthesixstring
+1  A: 

IMHO this is a very good approach: based on request parameters (or more specifically HTTP headers in this case) the controller decides which view to render.

Darin Dimitrov