У меня возникают трудности с помощниками Html при использовании с 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)
Расширение Show Show Compiler Output показывает:
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 - это просто перечисление, которое определяет способ отображения меню. Не зацикливайтесь на этом, так как это нормально.