在.NET Razor Web應用程序中,我試圖以編程方式設置Layout
。我不能使用_ViewStart.cshtml
,也不會在每頁上設置@{ Layout = "..." }
。這是我想出了:.NET MVC 3以編程方式設置佈局
的基WebViewPage
類:
public abstract class SitePage<T> : System.Web.Mvc.WebViewPage<T>
{
private object _layout;
public new dynamic Layout { get { return _layout; } }
public override void InitHelpers()
{
base.InitHelpers();
_layout = "~/Themes/" + Settings.Theme + "/Views/_Layout.cshtml";
}
}
並在應用web.config
我指定所有視圖中使用這個基地頁。但Layout
似乎從來沒有使用過。這裏有什麼可能是錯的?
public override string Layout { get; set; }
您可以覆蓋Layout
財產,或者改變你_layout邏輯來達到你的目的:
這似乎是導致一個計算器。當Layout.cshtml包含partialview時,再次調用InitHelpers並設置佈局,然後Layout.cshtml似乎再次初始化並再次設置佈局等。 – jaap
您是對的。你可以做一些事情來解決這個問題。其中之一是使用布爾標誌來檢查「佈局」是否被分配。我在我的項目中使用的是,我有3個基類,用於佈局,查看頁面和部分視圖。你也可以找到其他特別的方法 –
我不會說英語好。所以對不起,如果我的句子是不可理解的:D –