Представление MVC не может найти мой дополнительный метод

Я создал дополнительный метод:

namespace MyComp.Web.MVC.Html
{
    public static class LinkExtensions
    {
        public static MvcHtmlString ActionImageLink(this HtmlHelper htmlHelper, string linkText, string imageSource, string actionName)
        {
            ...
        }
    }
}

Я сослался на блок из своего mvc приложения, и я попытался импортировать пространство имен, по моему мнению:

<%@ Import Namespace="MyComp.Web.Mvc.Html" %>

и я также добавил его к веб-файлу конфигурации:

<pages>
    <controls>
        ...
    </controls>
    <namespaces>
        <add namespace="System.Web.Mvc"/>
        <add namespace="System.Web.Mvc.Ajax"/>
        <add namespace="System.Web.Mvc.Html"/>
        <add namespace="System.Web.Routing"/>
        <add namespace="System.Linq"/>
        <add namespace="System.Collections.Generic"/>
        <add namespace="MyComp.Web.Mvc.Html"/>
    </namespaces> 
</pages>

По моему мнению, если я пытаюсь получить доступ к HTML. ActionImageLink я получаю ошибку при высказывании той Системы. Сеть. Mvc. HtmlHelper не содержит определение для ActionImageLink, принимающего первый тип аргумента Системы. Сеть. Mvc. HtmlHelper. Я не вижу ни одного из методов расширения ActionLink для Системы. Сеть. Mvc. HtmlHelper, только для Системы. Сеть. Mvc. HtmlHelper, поэтому как это работает на платформу .NET, а не на меня?

11
задан Jeremy 21 January 2010 в 17:01
поделиться

4 ответа

Обратите внимание на разницу в случае вашего пространства имен при объявлении и при импорте Отказ

namespace MyComp.Web.MVC.Html
{
} 

<%@ Import Namespace="MyComp.Web.Mvc.Html" %>
<add namespace="MyComp.Web.Mvc.Html"/>

пространства имен чувствительны к регистру!

14
ответ дан 3 December 2019 в 03:52
поделиться

Одной из причин, возможно, вы возвращаете MVCHTMLSTRING и не строку. Включите пространство имен для класса MVCHTMLSTRING. Посмотрите, поможет ли это.

0
ответ дан 3 December 2019 в 03:52
поделиться

Попробуйте закрыть Visual Studio и снова открыть Solution. Когда вещи начинают вести себя странно, иногда это помогает.

4
ответ дан 3 December 2019 в 03:52
поделиться
  1. . В соответствии с вашим методом расширения INTELLISENSE AutoCompletes? Это автозаполняет стандартные методы помощников MVC? Если нет, то произошла ошибка Setleation View. Убедитесь, что у вас есть правильное значение «наследует» значение атрибута в теге страницы в начале представления. Если вы используете сильно напечатанные представления, убедитесь, что «сильный тип» существует и компилирует.

  2. Вы определяете метод расширения в том же проекте, где определен вид? Если нет, вы должны добавить ссылку в проекте MVC. Наконец, проверьте, если сборка с методом расширения (MyComp.Web.mvc.html.dll?) Находится в папке Bin приложения

  3. , попытайтесь добавить объявление пространства имен на раздел страниц / пространства имен файла Web.config Размещено в папку Views в проекте MVC (не основной файл Project Web.config).

1
ответ дан 3 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: