Cub*_*anX 13 razor asp.net-mvc-3
伙计们,
我们正在尝试使用如下所示的强类型操作链接方法:
Html.ActionLink<HomeController>
Run Code Online (Sandbox Code Playgroud)
在Razor视图引擎中.
我知道我们不应该一直使用它们,因为它忽略了过滤器等,但事实是我们确实使用它们.
如果我尝试直接在Razor中使用它,就像这样:
@Html.ActionLink<HomeController>(c => c.Index, "Home")
Run Code Online (Sandbox Code Playgroud)
我得到一个错误:
CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Run Code Online (Sandbox Code Playgroud)
如果你看一下编译过的代码,那是因为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");
Run Code Online (Sandbox Code Playgroud)
为了简洁省略了很多东西:)正如你所看到的,它将它拆分为"<"我认为它将其解释为HTML标记,但我无法确定.
我找到了一个解决方法,但它很难看.这有效:
@{Write(Html.ActionLink<PolicySectionController>(c => c.Edit(null), "New"));}
Run Code Online (Sandbox Code Playgroud)
有谁知道更好的方法吗?
mar*_*ind 18
是的,为了使用泛型方法,您需要使用parens来转义表达式.这会工作:
@(Html.ActionLink<PolicySectionController>(c => c.Edit(null), "New"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5847 次 |
| 最近记录: |