2009-02-24 23 views
7

Al haber actualizado al último ASP.NET MVC Release Candidate noté que, al usar Html Helpers, cualquier nombre con un punto "." en él se reemplazará por un guión bajo "_" cuando se muestre la ID del elemento.Evitando que ASP.NET MVC reemplace el período con guión bajo en Html Helper IDs

Creo que esto es to aid in using JQuery y el uso del período es para ayudar en el uso de ModelBinders. Esto ha roto todos nuestros javascript, que usan prototipos, ya que todos los ID han cambiado.

¿Hay alguna manera de desactivar esta característica fácilmente?

Respuesta

14

De las notas de la versión de ASP.NET MVC RC1 (página 15).

En esta versión, por defecto el carácter de punto se sustituyen automáticamente con un guión en el valor del atributo ID . Así, el cuadro de texto ejemplo hace que el siguiente marcado:

<input type="text" name="Person.FirstName" id="Person_FirstName" />

para cambiar el carácter de reemplazo predeterminada, puede establecer la propiedad HtmlHelper.IDDotReplacementChar al carácter que desea utilizar en su lugar.

FYI. Si observa el código fuente en http://www.codeplex.com/aspnet, parece que el nombre real de la propiedad en RC1 es IdAttributeDotReplacement. El fragmento de código relevante está debajo. Para mantener el punto, acaba de establecer esta propiedad para el carácter de punto, es decir, reemplace el carácter de punto consigo mismo.

public static string IdAttributeDotReplacement { 
    get { 
     if (String.IsNullOrEmpty(_idAttributeDotReplacement)) { 
      _idAttributeDotReplacement = "_"; 
     } 
     return _idAttributeDotReplacement; 
    } 
    set { 
     _idAttributeDotReplacement = value; 
    } 
} 
+2

Parece una manera extraña de hacerlo, supongamos que es para ayudar a JQuery por defecto. Agregué HtmlHelper.IdAttributeDotReplacement = "."; a Global Application_Start y volvimos a estar en línea en 8 minutos;) Gracias –

Cuestiones relacionadas