В MVC3 возможно ли создавать повторно используемые функции в поле зрения? - PullRequest
1 голос
/ 09 ноября 2011

Я говорю не о функциях javascript, а о функциях на стороне сервера, написанных на c #.

Для html-таблицы, на мой взгляд, я создаю заголовки таблиц, которые действуют как сортируемые столбцы. Но сортируемость зависит от сложной логики, поэтому я хочу поместить логику в функцию, а не записывать ее для каждого столбца.

@ Amr ElGarhy Спасибо, что предложили клиентский помощник, но созданный мной класс помощника не регистрируется.

Код помощника:

namespace MyHtmlHelpers
{
    public static class CustomHelpers
    {
        public static string MySortColumn(this HtmlHelper helper, string label, string col, string dir, UrlHelper url)
        {
            return string.Empty;
        }
    }
}

web.config:

<pages>
  <namespaces>
    <add namespace="System.Web.Helpers" />
    <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.Web.WebPages"/>
    <add namespace="MyHtmlHelpers"/>
  </namespaces>
</pages>

Но в представлении ни @ HtmlHelper.MySortColumn, ни @ Html.MySortColumn не регистрируются. Я что-то здесь упускаю? Я даже перезапустил свой компьютер.

UPDATE добавление пространства имен в web.config не работает для меня. добавление в просмотр страницы работ.

Ответы [ 4 ]

3 голосов
/ 09 ноября 2011

Я думаю, вам нужно взглянуть на HTML Helpers и на то, как создать собственный:

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs

http://www.asp.net/mvc/videos/how-do-i-create-a-custom-html-helper-for-an-mvc-application

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

Вы используете области?Области имеют свою собственную папку просмотра и обычно имеют собственный web.config.В этом случае вы можете попытаться добавить пространство имен к этому web.config.

Кроме того, файлы web.config разрешаются иерархически через папки.Это означает, что у вас может быть файл web.config в каталоге вашей базовой области, который влияет на все виды, специфичные для области.

В моем случае у меня есть два файла web.config, в которые я добавляю свои пространства имен - один находится в каталоге View, а другойодин в директории области.

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

Лучше создать базовый класс с логикой и вывести свои взгляды из этого класса. Обычно вы не должны раскрывать / передавать какие-либо методы для повторного использования между представлениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...