У меня проблемы с Html Helpers при использовании с Razor. Указанные помощники прекрасно работали в MVC 2 с механизмом просмотра веб-форм. Но не в бритве. Ошибка, которую я получаю во время выполнения:
Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Source Error:
Line 1: @using Wingspan.Web.Mvc;
Line 2: @Html.IncrementalMenu(MenuBlock.Site)
Расширение Показать подробный вывод компилятора показывает:
d:\...\Views\Shared\MenuTop.cshtml(2,1): error CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
d:\...\Views\Shared\MenuTop.cshtml(2,7): error CS1503: Argument 1: cannot convert from 'void' to 'System.Web.WebPages.HelperResult'
Это указывает на то, что бритве не нравится мой помощник, IncrementalMenu, возвращающий void (который отлично работает в представлениях движка веб-форм MVC 2).
Я не получаю ошибок во время компиляции, хотя строка кода (@ Html.IncrementalMenu (...)) подчеркнута красным со следующим сообщением:
Cannot implicitly convert type 'void' to 'object'
IncrementalMenu находится в пространстве имен Wingspan.Web.Mvc. Его подпись выглядит следующим образом:
public static void IncrementalMenu(this HtmlHelper html, MenuBlock menuBlock)
{
// Uses an HtmlTextWriter to render a menu from the sitemap
}
Я взорван, если я знаю, что не так ...
PS:
Параметр MenuBlock - это просто перечисление, которое определяет, как должно отображаться меню. Не зацикливайтесь на этом, так как это нормально.