Boris Callens
Boris Callens

Reputation: 93327

Change views root folder

Is there a way to change the root folder for the views to the bin/views folder?

Upvotes: 0

Views: 278

Answers (1)

Craig Stuntz
Craig Stuntz

Reputation: 126547

You can subtype WebFormsViewEngine:

public class MyViewEngine : WebFormViewEngine
{
    public MyViewEngine() {
        MasterLocationFormats = new[] {
            "~/bin/Views/{1}/{0}.master",
            "~/bin/Views/Shared/{0}.master"
        };

        ViewLocationFormats = new[] {
            "~/bin/Views/{1}/{0}.aspx",
            "~/bin/Views/{1}/{0}.ascx",
            "~/bin/Views/Shared/{0}.aspx",
            "~/bin/Views/Shared/{0}.ascx"
        };

        PartialViewLocationFormats = ViewLocationFormats;
    }
}

Then edit Global.asax to use it:

    private void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
        // replace default WebForms view engine.
        ViewEngines.Engines.Remove(ViewEngines.Engines.OfType<WebFormViewEngine>().Single());
        ViewEngines.Engines.Add(new Namespace.MyViewEngine());
    }

Upvotes: 1

Related Questions