Вы можете написать пользовательский поставщик виртуальных путей .Вот значения по умолчанию, которые могут вас заинтересовать в переопределении:
MasterLocationFormats = new[]
{
"~/Views/{1}/{0}.master",
"~/Views/Shared/{0}.master"
};
AreaMasterLocationFormats = new[]
{
"~/Areas/{2}/Views/{1}/{0}.master",
"~/Areas/{2}/Views/Shared/{0}.master",
};
ViewLocationFormats = new[]
{
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx"
};
AreaViewLocationFormats = new[]
{
"~/Areas/{2}/Views/{1}/{0}.aspx",
"~/Areas/{2}/Views/{1}/{0}.ascx",
"~/Areas/{2}/Views/Shared/{0}.aspx",
"~/Areas/{2}/Views/Shared/{0}.ascx",
};
Вот как это может выглядеть в вашем случае:
public class CustomViewEngine : WebFormViewEngine
{
public CustomViewEngine()
{
AreaMasterLocationFormats = new[]
{
"~/MyOwnAreaName/{2}/Views/{1}/{0}.master",
"~/MyOwnAreaName/{2}/Views/Shared/{0}.master",
};
AreaViewLocationFormats = new[]
{
"~/MyOwnAreaName/{2}/Views/{1}/{0}.aspx",
"~/MyOwnAreaName/{2}/Views/{1}/{0}.ascx",
"~/MyOwnAreaName/{2}/Views/Shared/{0}.aspx",
"~/MyOwnAreaName/{2}/Views/Shared/{0}.ascx",
};
}
}
, а затем зарегистрируйте этот пользовательский движок в Application_Start
:
protected void Application_Start()
{
...
ViewEngines.Engines.Add(new CustomViewEngine());
}
Теперь вы можете помещать файлы областей в ~/MyOwnAreaName
.
Примечание / советы: максимально придерживайтесь соглашений ASP.NET MVC и отменяйте их только в том случае, еслистрого необходимо.