Как исправить intellisense на пользовательском расширении HtmlHelper? - PullRequest
2 голосов
/ 18 ноября 2011

Использование 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 (добавлено пространство имен)

Я добавил ссылку на свойlibrairy в общем web.config и просмотр web.config
(я также пытался добавить его в контроллер.)

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

Страница работает правильно и строит HTML, как мне нужноон .Но VS продолжает говорить мне, что код неправильный ( CustomLink не является членом 'System.Web.HtmlHelper (Of Object)' )!Есть идеи?

1 Ответ

1 голос
/ 24 ноября 2011

Попробуйте указать проект при добавлении пространства имен:

<add namespace="MyProject.linkExtension" />

Если вы не уверены, что это такое, найдите проект, в котором находится ваш htmlHelperExtensions, щелкните его правой кнопкой мыши в обозревателе решений, выберите Свойства и в приложении используйте вкладку под меткой «Пространство имен корня» .

Кроме того, ваш код не показывает использование 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 вы работаете? О подобной проблеме сообщил кто-то, также использующий VB.NET. В случае этого человека они работали при обновлении всех своих проектов до MVC 3 или при удалении MVC 3, так как они использовали MVC 2. По-видимому, также были некоторые помехи при установке SP1 и Azure Tools.

...