【发布时间】:2015-04-04 02:32:22
【问题描述】:
我想创建一个 Razor 助手来减少我需要编写的代码量。我在我的项目中添加了一个 App_Code 文件夹并添加了一个名为 MyHelpers.cshtml 的文件,其中包含以下内容(用于说明的简单示例)...
@using System.Web.Mvc
@using System.Web.Mvc.Html
@helper HomeLink() {
@Html.ActionLink("Home", "Index", "Home")
}
但是,这会产生一个编译器异常,表示 Html.ActionLink 没有采用三个字符串的重载。 ActionLink 代码是从可以正常工作的 Razor 页面复制的。在我自己的帮助器中尝试使用任何其他标准帮助器时,我遇到了类似的问题。
如果我尝试使用 Telerik 的 KendoUI 的 MVC 包装器,这些包装器像 @Html.Kendo.ComboBox 一样被引用...然后我在 Html 下看到一条红线,并显示一条消息“无法转换实例类型 System.Web.WebPages .Html.HtmlHelper 到 System.Web.Mvc.HtmlHelper"
根据这篇博文末尾的说明,这是 MVC3 的一个已知问题,但应该会在下一个版本中添加...
http://weblogs.asp.net/scottgu/asp-net-mvc-3-and-the-helper-syntax-within-razor
根据这个 UserVoice 页面,该问题实际上已在 VS2013 中修复...
我在一个全新的 MVC5 项目中使用 VS2013 Update 4,但它似乎不起作用。我已经尝试了很多我在这里找到的解决方法,但都没有帮助。
有人有什么想法吗?
【问题讨论】:
-
我的猜测是,您不能直接在助手内部调用助手,请参阅此帖子以获取可能的解决方案:stackoverflow.com/questions/10522049/…
-
嗯,看起来像个 hack,但它可能会起作用。我不明白的是,微软说他们解决了这个问题(参见我帖子中的 UserVoice 链接),所以它应该可以工作而不必做这样的事情。无论如何,我会试一试,看看它是否有效。谢谢
标签: asp.net-mvc razor