Класс WebViewPage
наследуется от WebPageBase
, у которого есть свойство с именем Layout
, например:
public override string Layout { get; set; }
. Вы можете переопределить свойство Layout
или изменить логику _layout для достижения своей цели.,Например:
public abstract class SitePage<T> : System.Web.Mvc.WebViewPage<T> {
// set this modifier as protected, to make it accessible from view-pages
protected string _layout{
get {
return base.Layout;
}
set {
base.Layout = value;
}
}
public override void InitHelpers() {
base.InitHelpers();
_layout = "~/Themes/" + Settings.Theme + "/Views/_Layout.cshtml";
}
}
и / или на странице просмотра вы также можете установить его:
@{
_layout = "_Your_Special_Layout.cshtml";
}
ОБНОВЛЕНИЕ : использование флага, чтобы избежать стека-процесс потока в назначении _layout более одного раза:
public abstract class SitePage<T> : System.Web.Mvc.WebViewPage<T> {
public bool LayoutAssigned {
get {
return (ViewBag.LayoutAssigned == true);
}
set {
ViewBag.LayoutAssigned = value;
}
}
// set this modifier as protected, to make it accessible from view-pages
protected string _layout{
get {
return base.Layout;
}
set {
base.Layout = value;
}
}
public override void InitHelpers() {
base.InitHelpers();
if(!LayoutAssigned) {
_layout = "~/Themes/" + Settings.Theme + "/Views/_Layout.cshtml";
LayoutAssigned = true;
}
}
}