我尝试使用Telerik的控件创建一个html帮助器,但为了做到这一点,我必须在文件的顶部有这个指令:
@using Telerik.Web.Mvc.UI
问题在于html helper,当我输入'@using'然后尝试键入'Telerik'时,visual studio告诉我,即使我已经在其他许多地方使用此指令,命名空间也不存在同一个项目。
正如您所看到的那样,Telerik名称空间产生错误; '无法解决符号......
这是同一项目的某个EditorTemplates文件夹中的相同代码,但在这种情况下,没有错误:
是因为除了MVC框架之外我无法控制或者我错过了什么?
谢谢。
编辑:
在Darin的帮助下搜索后,我终于找到了问题所在。您可以查看Darin的评论。
此外,这是我的最终代码:
@using System.Web.Mvc
@using Telerik.Web.Mvc.UI
@helper IntegerTextBox(System.Web.Mvc.HtmlHelper html, string id, int? value, bool enable = true)
{
@(html.Telerik().IntegerTextBox()
.Name(id)
.InputHtmlAttributes(new {style = "width:200px"})
.Spinners(false)
.EmptyMessage("")
.MaxValue(int.MinValue)
.MaxValue(int.MaxValue)
.Value(value)
.Enable(enable)
)
}
就像我说的那样,你不能使用@using指令到System.Web.Mvc来减少第一个参数的完全限定类型。我不知道为什么......'HtmlHelper'看起来像'html helper'或'@helper'......这个词与MVC框架中的某些内容有冲突?我不知道!? :(
答案 0 :(得分:5)
我想这是由于Visual Studio中糟糕的Razor Intellisense支持。运行它时,您的代码应该可以正常工作。您可以尝试重新打开视图,重新启动VS,禁用插件,如果幸运的话,您甚至可以使智能感知工作。
顺便说一下,您可以使用<namespaces>
的{{1}}部分(不要与~/Views/web.config
混淆)并添加~/web.config
命名空间。这将避免您需要将其添加到需要它的每个Razor视图中。显然,修改此文件后更改才会生效,不要忘记重新打开剃刀页面(因为我已经说过Razor Intellisense在VS中糟透了)。