【问题标题】:How to fix the intellisense on a custom HtmlHelper Extension?如何修复自定义 HtmlHelper 扩展上的智能感知?
【发布时间】:2011-12-31 18:07:33
【问题描述】:

将 VB.NET 与 MVC3 和 Razor 结合使用。

我有一个 htmlhelper 自定义扩展的测试页面。 Visual Studio 告诉我视图不正常:

index.vbhtml 代码(视图)

<h2>@ViewData("Message")</h2>

@Html.CustomLink("text 321312", 123)

错误:CustomLink 不是 System.Web.Mvc.HtmlHelper(..) 的成员

LinkExtension.vb(扩展)代码

Imports System.Runtime.CompilerServices
Imports System.Web.Mvc

Public Module htmlHelperExtensions
    <Extension()> _
    Public Function CustomLink(htmlHelper As HtmlHelper, linkText As String, uuid As Short) As MvcHtmlString
        Return MvcHtmlString.Create(String.Format("<a href="#{1}">{0}</a>", linkText, uuid )
    End Function
End Module

web.config(添加命名空间)

我在常规 web.config 和视图 web.config 中都添加了对我的库的引用
(我也尝试将其添加到控制器中。)

<system.web>
  <pages>
    <namespaces>
      [...]
      <add namespace="linkExtension" />
    </namespaces>
  </pages>
</system.web>

页面正常运行并根据需要构建 html。但是 VS 一直告诉我代码不正确(CustomLink 不是 'System.Web.HtmlHelper(Of Object)' 的成员)!有什么想法吗?

【问题讨论】:

  • 有时在 Views 文件夹中的 web.config 文件中添加命名空间后,需要卸载项目,然后重新加载以获取 Intellisense 以获得新的帮助程序类。
  • 我将命名空间添加到视图文件夹中的 web.config 中,但它仍然给我同样的错误。

标签: vb.net visual-studio-2010 razor intellisense html-helper


【解决方案1】:

添加命名空间时尝试指定项目:

<add namespace="MyProject.linkExtension" />

如果您不确定它是什么,请找到您的 htmlHelperExtensions 所在的项目,在解决方案资源管理器中右键单击它,选择 Properties,然后在 Application em> 选项卡使用 “根命名空间” 标签下的值。

另外,您的代码没有显示扩展文件中定义的Namespace linkExtension 的用法,因此如果上述方法不起作用,请尝试将其添加到您的模块中:

Namespace linkExtension
    Public Module htmlHelperExtensions
        <Extension()> _
        Public Function CustomLink(htmlHelper As HtmlHelper, linkText As String, uuid As Short) As MvcHtmlString
            Return MvcHtmlString.Create(String.Format("<a href="#{1}">{0}</a>", linkText, uuid )
        End Function
    End Module
End Namespace

如果这没有帮助,那么您运行的是哪个版本的 MVC? similar issue was reported 由也使用 VB.NET 的人提供。在那个人的案例中,他们在将所有项目升级到 MVC 3 或卸载 MVC 3 时得到了它,因为他们使用的是 MVC 2。显然,安装 SP1 和 Azure 工具也存在一些干扰。

【讨论】:

  • linkExtension 是我的根项目名称,这就是为什么没有定义命名空间的原因。 linkExtension.linkExtension 有点多余。我尝试添加一个命名空间:没有改变任何东西(仍然有效,仍然告诉它不正确)。该项目基于this,即MVC3(需要/使用Razor)。不确定 SP1(知道了)和 Azure 工具(未安装)。
  • 好吧,看来我的库使用的是 MVC2 dll 而不是 MVC3 的。现在,它运行良好。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2020-11-27
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
相关资源
最近更新 更多