2012-03-12 7 views
7

Estoy creando métodos de extensión HtmlHelper. Muchos de los métodos de framework incorporados soportan parámetros como htmlAttributes (de tipo object) que se renderizan en el HTML resultante. ¿Cómo puedo proporcionar sobrecargas de mis propios métodos que también admiten un parámetro htmlAttributes sin reescribir la lógica de concatenación de cadenas para representarlos como atributos en la etiqueta?¿Cómo soportar los parámetros htmlAttributes en HtmlHelper Extensions?

+0

¿Qué tienes hasta ahora? –

Respuesta

17

El objeto HtmlHelper tiene un método que convierte un objeto en un diccionario de nombre/valor, que luego puede combinar en la etiqueta a medida que se está construyendo. Por ejemplo, este código generará una etiqueta <script> con lo que se pasan atributos adicionales en:

var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes) as IDictionary<string, object>; 

TagBuilder tag = new TagBuilder("script"); 
tag.MergeAttributes(attributes); 
tag.MergeAttribute("type", "text/javascript"); 
tag.MergeAttribute("src", scriptPath); 

Usted puede proporcionar sobrecargas o utilizar los valores por defecto para suministrar un valor para nullhtmlAttributes, que producirá un vacío Dictionary.

(El método también desinfecta los nombres de atributo en atributos HTML válido, etc por lo que es seguro de usar en casi cualquier objeto.)

+0

Guau, justo lo que necesitaba. ¡Gracias! – blaster

Cuestiones relacionadas