ASP.NET MVC HTML помощники не работают - PullRequest
5 голосов
/ 15 сентября 2009

Я надеюсь, что кто-нибудь может мне помочь. Я пытался написать собственный помощник HTML для моего приложения MVC. Во-первых, я попытался с тестовым, который только пишет тег

для указанного параметра. Дело в том, что это не работает, если я не импортирую явно пространство имен. Я много читаю, и пока я читаю, этот метод должен отображаться без пространства имен импорта, например:

<%=Html.Prueba("This is a paragraph") %>

Но этот метод, Prueba, не отображается в VS Intellisense.

Мой класс следующий:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;

namespace EasyGoCostaRica.Helpers
{
    public static class ViewsHelpers
    {
        //This method is just for testing. Is not working :(
        public static string Prueba(this HtmlHelper helper, string param1)
        {
            return string.Format("<p>{0}</p>", param1);
        }
    }

}

Заранее спасибо!

Ответы [ 3 ]

12 голосов
/ 15 сентября 2009

Пространство имен должно быть объявлено / импортировано куда-либо. Вы можете сделать это либо:

  • внутри самой страницы
  • главная страница или
  • внутри файла web.config

Если вы хотите что-то global , лучше всего настроить ваше пространство имен в web.config.

Используйте директиву <@import...> для первых двух и <namespace> элемент конфигурации для последнего.

6 голосов
/ 08 декабря 2013

По какой-то причине в Visual Studio 2013 необходимо перезапустить vs, чтобы изменения в файле web.config вступили в силу.

6 голосов
/ 15 сентября 2009

Вы можете добавить пространство имен в файл web.config, и вам не придется беспокоиться об этом позже.

Внутри вашего web.config вы должны увидеть что-то вроде этого:

<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"/>
</namespaces>

Просто добавьте строку с вашим пространством имен.

Если вы не хотите, чтобы помощники импортировались глобально, у каждого каталога может быть свой собственный файл web.config. Если не указано иное, эти «sub» web.configs будут наследовать настройки от более высоких web.configs. Если вы идете по этому пути, будьте предупреждены, некоторые настройки могут быть установлены только на уровне приложения. Это может быстро запутать.

...