在Telez的Razor web帮助器中使用html帮助器

Sam*_*uel 1 c# html-helper asp.net-mvc-3

我尝试用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)
        )
}
Run Code Online (Sandbox Code Playgroud)

就像我说的那样,你不能使用@using指令到System.Web.Mvc来减少第一个参数的完全限定类型.我不知道为什么......'HtmlHelper'看起来像'html helper'或'@helper'......这个词与MVC框架中的某些内容有冲突?我不知道!?:(

Dar*_*rov 5

我想这是由于Visual Studio中糟糕的Razor Intellisense支持.运行它时,您的代码应该可以正常工作.您可以尝试重新打开视图,重新启动VS,禁用插件,如果这是您的幸运日,您甚至可能会使Intellisense工作.

顺便说一句,您可以使用您的<namespaces>部分~/Views/web.config(不要混淆~/web.config)并添加Telerik.Web.Mvc.UI命名空间.这将避免您需要将其添加到需要它的每个Razor视图中.显然,修改此文件后更改才会生效,不要忘记重新打开剃刀页面(因为我已经说过Razor Intellisense在VS中糟透了).