Baba
Baba

Reputation: 2219

Having two master pages in mvc 3 application?

I have a MVC application that exist at the moment using a _MainLayoutPage for its Master Page.

I want to create another Master Page for a different purpose. I will be creating a new controller as well.

How can I do this?

Upvotes: 0

Views: 684

Answers (2)

John Gibb
John Gibb

Reputation: 10773

In _ViewStart.cshtml, put this:

    @{
        try {
            Layout = "~/Views/" + ViewContext.RouteData.Values["controller"] + "/_Layout.cshtml";
        }
        catch {
            Layout = "~/Views/Shared/_Layout.cshtml";
        }
    }

And then you can put a controller specific _Layout.cshtml in your controller folders, like

  • ~/Views/User/_Layout.cshtml for a controller named UserController
  • ~/Views/Account/_Layout.cshtml for a controller named AccountController

And because of the try/catch, it will fall back to the '~/Views/Shared/_Layout.cshtml' layout if one is not defined for a specific controller.

Upvotes: 0

Uri Mikhli
Uri Mikhli

Reputation: 675

The simplest way is in your Action Method, set a Viewbag property for your Layout

public ActionResult Index()
{
  ViewBag.Layout= "~/Views/Shared/layout2.cshtml";

In your View, set the layout property

@{
    Layout = @ViewBag.Layout;
}

Upvotes: 2

Related Questions