Не удается создать методы HtmlHelper в приложении VB MVC - PullRequest
1 голос
/ 18 июня 2009

Я не могу понять, что мне не хватает в следующем коде. У меня есть метод, который должен добавить (фиктивное) вспомогательное расширение:

Imports System.Runtime.CompilerServices

Namespace HtmlHelpers

    Public Module HelpExtensions

        <Extension()> _
        Public Function HelpMe(ByVal HtmlHelper As HtmlHelper) As String
            Return "<a>HELP</a>"
        End Function

    End Module

End Namespace

Мой взгляд выглядит так:

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<%@ Import Namespace="HtmlHelpers" %>
<asp:Content ID="indexContent" ContentPlaceHolderID="body" runat="server">
    <%=Html.HelpMe()%>
</asp:Content>

Но это дает мне следующую ошибку:

'HelpMe' is not a member of 'System.Web.Mvc.HtmlHelper'.

Что я делаю не так?

Ответы [ 5 ]

1 голос
/ 21 июля 2009

Не уверен, почему директива Import Namespace не сработала, но я добавил

<add namespace="MyProject.HtmlHelpers"/>

в <namespaces> разделе web.config, и теперь он работает. Может быть, если бы я сделал

<%@ Import Namespace="MyProject.HtmlHelpers" %>

это бы тоже сработало?

0 голосов
/ 25 января 2014

Как сказал gfrizzle, добавление ссылки на пространство имен в web.config в папке Views позволяет странице отображаться правильно. Однако мне пришлось перезапустить клиент, чтобы заставить Intellisense работать должным образом. Мне также пришлось явно добавить операторы Import для пространств имен, которые уже были глобально импортированы в файл с модулем расширения.

Например, при расширении System.Web.Mvc.HtmlHelper мне пришлось добавить строку

Imports System.Web.Mvc

для того, чтобы страница отображалась без ошибок, несмотря на то, что приложение правильно компилируется и пространство имен проверяется на вкладке ссылок проекта.

0 голосов
/ 22 ноября 2011

Возможно, проблема в том, что вы установили MVC2 и MVC3. Если это так, то при написании пользовательского HTMLHelper с VB.NET Visual Studio выдается объявление Ошибка «Ваш класс» не является членом «System.Web.Mvc.HtmlHelper».

Но если вы запустите страницу, она будет работать нормально.

Это решение: http://forums.asp.net/t/1694828.aspx/1

Решение 1) Обновите ваш проект до MVC3 Решение 2) Удалите MVC3 Решение 3) Измените .NET Framework на 3.5 вместо 4.0 (отключите MVC3) Решение 4) Напишите код на C #, и у вас не возникнет проблем

Marco

0 голосов
/ 20 февраля 2011

Полагаю, я только что нашел решение.

Модули вашего помощника должны быть в каталоге App_Code .

0 голосов
/ 21 июля 2009

Вы пытались перестроить свое решение, прежде чем пытаться использовать метод расширения? Я должен был сделать это с VB.NET, чтобы компилятор обнаружил существование моих методов расширения.

...