Класс HtmlHelper в пространствах имен System.Web.Webpages.Html и System.Web.Mvc - PullRequest
6 голосов
/ 26 марта 2012

В ASP.NET MVC3 я пытаюсь установить класс css, который устанавливает вспомогательный метод ошибки проверки.(Не этот вопрос , принятый ответ просто ДОБАВЛЯЕТ класс, я хочу полностью его переопределить.) Глядя на источник MVC3, я обнаружил свойство ValidationInputCssClassName класса HtmlHelper.Это настраиваемое значение, и оно сохраняет значение в провайдере хранения, если установлено.Метод get для свойства возвращает [значение провайдера] ?? [имя класса по умолчанию].

Теперь, если вы просто наберете HtmlHelper.ValidationInputCssClassName ( запись MSDN ) в вашем контроллерекод вы увидите, что это статическое поле только для чтения.Причина этого в том, что существует два класса HtmlHelper, один из которых находится в пространстве имен System.Web.Mvc, а другой - в пространстве имен System.Web.Webpages.Html.Свойство System.Web.Webpages.Html.HtmlHelper.ValidationInputCssClassName ( запись MSDN ) можно установить, но, похоже, оно не оказывает никакого влияния на сгенерированный код, независимо от того, где я его установил.

Чего мне не хватает?И в чем разница между этими классами?

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Глядя на описание пространства имен, выясняется, что одно из них предназначено для Razor и предназначено для использования с WebMatrix.

Ссылка: http://msdn.microsoft.com/en-us/library/gg549171(v=vs.99).aspx

Также:

Пространство имен System.Web.Mvc содержит классы, используемые для создания элементов HTML.

Типы в этом пространстве имен находятся в сборке System.Web.WebPages и идентичны эквивалентным типам в сборке System.Web.Mvc.

Ссылка: http://msdn.microsoft.com/en-us/library/system.web.mvc(v=vs.99).aspx

3 голосов
/ 26 марта 2012

Я не уверен, но я думаю, что System.Web.WebPages.Html предназначен для использования веб-форм ASP.net с Razor.

Поскольку ValidationInputCssClassName и т. Д. - все поля только для чтения, я думаю, что единственный способ, которым вы собираетесьОбойти это можно, создав собственные методы расширения HtmlHelper, чтобы вы могли настроить это поведение.

С MSDN :

Пространство имен System.Web.WebPagesсодержит базовые классы, которые используются для визуализации и выполнения страниц, созданных с использованием веб-страниц ASP.NET с синтаксисом Razor.

...