Народ,
Мы пытаемся использовать строго типизированные методы ссылок действий, которые выглядят следующим образом:
Html.ActionLink<HomeController>
в движке представления Razor.
Я знаюмы не должны использовать их все время, потому что они игнорируют фильтры и т. д., но на самом деле мы их используем.
Если я попытаюсь использовать это непосредственно в Razor, вот так:
@Html.ActionLink<HomeController>(c => c.Index, "Home")
Я получаю сообщение об ошибке:
CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Если вы посмотрите на скомпилированный код, то это потому, что Razor не выполняет синтаксический анализ этого оператора, как вы ожидаете.Скомпилированный источник, из ошибки, в которой есть строка, выглядит следующим образом:
...
Line 101: #line 13 "C:\dev\TheNetwork\POC\Web\Views\Policy\Edit.cshtml"
Line 102: Write(Html.ActionLink);
Line 103:
Line 104:
Line 105: #line default
Line 106: #line hidden
Line 107: WriteLiteral("<PolicySectionController>(c => c.Edit(null), "New\")\r\n\r\n\r\n\r\n");
Многое пропущено для краткости :) Как вы можете видеть, он разбивает его на "<". Я думаю, что он интерпретирует это какHTML-тег, но я не уверен. </p>
Я нашел обходной путь, но он уродлив.Это работает:
@{Write(Html.ActionLink<PolicySectionController>(c => c.Edit(null), "New"));}
Кто-нибудь знает лучший способ сделать это?