#asp.net #asp.net-mvc-3
#asp.net #asp.net-mvc-3
Вопрос:
Я говорю не о функциях javascript, а о серверных функциях, написанных на c #.
Для таблицы html в моем представлении я создаю заголовки таблиц, которые действуют как сортируемые столбцы. Но возможность сортировки зависит от сложной логики, поэтому я хочу поместить логику в функцию вместо записи ее для каждого столбца.
@Amr ElGarhy Спасибо, что предложили customer helper, но класс helper, который я создаю, не регонизируется.
Вспомогательный код:
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 повторно настроен. Я что-то здесь упускаю? Я даже перезапустил свой компьютер.
ОБНОВЛЕНИЕ добавление пространства имен в web.config у меня не сработало. добавление страницы просмотра работает.
Комментарии:
1. попробуйте добавить это в первую строку вашего представления: ‘@using MyHtmlHelpers’
Ответ №1:
Я думаю, вам нужно взглянуть на помощники HTML и на то, как создать пользовательский:
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:
Попробуйте это
Ответ №3:
Лучше создать базовый класс с логикой и выводить свои представления из этого класса. Обычно вы не должны раскрывать какие-либо методы для повторного использования между представлениями.
Комментарии:
1. цель состоит в том, чтобы повторно использовать в одном представлении, а не делиться между другими.
2. Почему эта функциональность должна быть изолирована только для одного представления? Есть ли проблема безопасности, которая не учтена?
3. Я создаю служебный класс / метод для удобства кодирования.
Ответ №4:
Используете ли вы области? Области имеют свою собственную папку view и обычно имеют свой собственный web.config. Если это так, вы можете попробовать добавить пространство имен в этот web.config.
Кроме того, файлы web.config иерархически разрешаются через папки. Это означает, что в вашем каталоге базовой области может быть web.config, который влияет на все представления, относящиеся к конкретной области.
В моем случае у меня есть два файла web.config, куда я добавляю свои пространства имен — один находится в каталоге View, а другой — в каталоге Area.
Комментарии:
1. Я не использую области. Но я могу смириться с добавлением инструкций «using» в верхней части страницы просмотра.