2011-12-17 29 views
0

私のasp.net MVC 3アプリケーションでは、ネストされたレイアウトがあります。asp.net MVC 3カミソリレイアウトエラー

http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx

私の主なレイアウトページis_MasterLayout.cshtml、その後、ネストされたレイアウトページ_fullLayout.cshtml:私は、次のリンクをたどってきました。 _fullLayout.cshtmlで、私は持っています:

@this.RedefineSection("BodyTitle") 
@this.RedefineSection("Showcase") 

しかし、私はこれらの行に乗っています。エラーは次のとおりです。

コンパイルエラー

説明:エラーは、この要求を処理するために必要なリソースのコンパイル中に発生しました。以下の特定のエラーの詳細を確認し、ソースコードを適切に変更してください。

コンパイラエラーメッセージ:CS1928:「ASP._Page_Views_Shared__fullLayout_cshtmlは」「RedefineSection」と最高の拡張メソッドのオーバーロード「SectionExtensions.RedefineSection(System.Web.WebPages.WebPageBase、文字列)」の定義が含まれていないいくつかの無効な引数を持っています

ソースエラー:

ライン9:
ライン10:} 11行目:this.RedefineSection( "ショーケース") ライン13 @:this.RedefineSection( "BodyTitle") ライン12 @ @RenderBody()

私のヘルパーメソッドは次のように定義されています:

public static class SectionExtensions 
{ 

    private static readonly object _o = new object(); 

    public static HelperResult RenderSection(this WebPageBase page, string sectionName, Func<object, HelperResult> defaultContent) 
    { 
     if (page.IsSectionDefined(sectionName)) 
      return page.RenderSection(sectionName); 
     else 
      return defaultContent(_o); 
    } 

    public static HelperResult RedefineSection(this WebPageBase page, string sectionName) 
    { 
     return RedefineSection(page, sectionName, defaultContent: null); 
    } 

    public static HelperResult RedefineSection(this WebPageBase page, string sectionName, Func<object, HelperResult> defaultContent) 
    { 
     if (page.IsSectionDefined(sectionName)) 
      page.DefineSection(sectionName,() => page.Write(page.RenderSection(sectionName))); 
     else if (defaultContent != null) 
      page.DefineSection(sectionName,() => page.Write(defaultContent(_o))); 
     return new HelperResult(_ => { }); 
    } 

} 

ソリューションを提案してください。

よろしく、 アシフハミード

答えて

0

RedefineSectionヘルパーは、二つ以上の引数

RedefineSection(this WebPageBase page, string sectionName) 

が含まれていますが、あなたが何かを配置する必要が

http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx

によると、唯一のあなたのビューで

@this.RedefineSection("BodyTitle") 
@this.RedefineSection("Showcase") 

を渡しています

@this.RedefineSection("TitleSection", 
        @<h1>Default SubLayout title</h1>) 
+0

私はこれを次のように使用しました。RedefineSection(「BodyTitleは」、

デフォルトSubLayoutタイトル

@)this.RedefineSection @ (

デフォルトSubLayoutショーケース

@「ショーケース」、)それでも同じエラー – DotnetSparrow

+0

1に言及するには、この、私はコンテンツページでこのセクションを定義していませんでした。 – DotnetSparrow

+0

@RenderSection( "TitleSection"、必須:false) マスターレイアウトの@RenderBody() – Neha

0

あなたの問題 1.あなたのクラス「SectionExtensions」の名前空間を取得し解決するための工程に続いて。 2. RedefineSectionを使用するレイアウトページでは、ページの先頭にその名前空間をインポートします。

@ yournamespaceを使用します。

ありがとうございました。

+0

このクラスはどの名前空間にもありません。私はそれを名前空間で囲み、先頭に "@using CreditRegistry.Models"を追加しましたが、それと同じエラーです。 – DotnetSparrow

+0

両方のmaterpageに名前空間を入れてください。マスタレイアウトとネストされたレイアウト。 – dotnetstep