В моем приложении asp.net MVC 3 у меня есть вложенные макеты. Я перешел по следующей ссылке:
http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-layouts-and-redefined-sections.aspx
Моя основная страница макета - это_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, string)» некоторые 1015 *
Ошибка источника:
Строка 9:
Строка 10:}
Строка 11: @ this.RedefineSection ("BodyTitle")
Строка 12: @ this.RedefineSection («Витрина»)
Строка 13: @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(_ => { });
}
}
Пожалуйста, предложите решение.
С уважением,
Асиф Хамид