.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ロジックを変更することができます。
これは、stackoverflowを引き起こしているようです。 Layout.cshtmlにpartialviewが含まれている場合、InitHelpersが再度呼び出されてレイアウトが設定され、Layout.cshtmlが再び初期化され、レイアウトが再度設定されるように見えます。 – jaap
そうです。あなたはこれを解決するために何かをすることができます。そのうちの1人は、 'Layout'が割り当てられているかどうかをチェックするためにboolean-flagを使用しています。私のプロジェクトで使ったのは、レイアウト、ビューページ、部分ビューの3つの基本クラスがあることです。また、あなたのプロジェクトにとって特別な方法を見つけることができます –
私は英語を話せません。私の文章が理解できない場合、申し訳ありません:D –