2012-03-26 11 views
6

En ASP.NET MVC3 estoy tratando de establecer la clase CSS que el error de validación conjuntos método de ayuda. (No this question, la respuesta aceptada sólo se suma a la clase, quiero anular por completo.) Al analizar la fuente MVC3 que he encontrado la propiedad ValidationInputCssClassName en la clase HtmlHelper. Es configurable y almacena el valor en un proveedor de almacenamiento si está configurado. El método get para la propiedad devuelve [el valor del proveedor] ?? [el nombre de clase predeterminado].clase HtmlHelper en System.Web.Webpages.Html vs System.Web.Mvc espacios de nombres

Ahora bien, si escribe HtmlHelper.ValidationInputCssClassName (MSDN entry) en el código del controlador, verá que se trata de un campo de solo lectura estático. El motivo es que hay dos clases HtmlHelper, una en el espacio de nombres System.Web.Mvc y la otra en el espacio de nombres System.Web.Webpages.Html. Se puede configurar la propiedad System.Web.Webpages.Html.HtmlHelper.ValidationInputCssClassName (MSDN entry), pero no parece tener ningún efecto en el código generado, sin importar dónde lo configuré.

¿Qué me estoy perdiendo? ¿Y cuál es la diferencia entre estas clases?

Respuesta

3

No soy positivo, pero creo que System.Web.WebPages.Html es para usar ASP.net WebForms con Razor.

Dado que ValidationInputCssClassName, etc. son todos campos de solo lectura, creo que la única forma de evitar esto es creando sus propios métodos de extensión HtmlHelper para que pueda personalizar este comportamiento.

De MSDN:

El espacio de nombres System.Web.WebPages contiene las clases básicas que se utilizan para hacer y ejecutar páginas que se construyen utilizando ASP.NET Web Pages con la sintaxis Razor.

+0

Estoy usando Razor. La propiedad HtmlHelper en el espacio de nombres Web.WebPages está claramente destinada a ser modificada por algo. Roll-your-own es el último recurso, ¡no quiero que se publiquen actualizaciones con cada lanzamiento de MVC! – Paul

+0

@Paul Estoy hablando de WebForms con Razor. Es solo una suposición, pero para eso suena como si supuestamente se usara. ASP.net WebForms páginas Razor. – Dismissile

3

Al mirar la descripción del espacio de nombres, parece que uno de ellos está diseñado para Razor y está destinado a ser utilizado con WebMatrix.

Referencia: http://msdn.microsoft.com/en-us/library/gg549171(v=vs.99).aspx

también:

El espacio de nombres System.Web.Mvc contiene clases que se utilizan para crear elementos HTML.

Los tipos en este espacio de nombres se encuentran en el ensamblado System.Web.WebPages y son idénticos a los tipos equivalentes en el ensamblado System.Web.Mvc.

Referencia: http://msdn.microsoft.com/en-us/library/system.web.mvc(v=vs.99).aspx

Cuestiones relacionadas