2010-03-24 10 views
7

Estoy cariñosa ASP.NET MVC, estar al día con los lanzamientos/documentos a veces puede ser complicado, así que tal vez no estoy obteniendo algo ... Quiero usar un TextBoxFor(), y trabajando con LabelFor() etc. está bien, toda la magia me sucede.Referencia Identificación de un control creada con TextBoxFor()

Pero si creo ...

<%=Html.TextBoxFor(x => x.LastName) %> 

y quería hacer algo bueno con jQuery, ¿cómo iba a obtener el ID del control que se creó? Podría agregar una clase CSS y el uso que para adjuntar mi jQuery, pero para algo que estoy haciendo me gustaría que el ID ... así que podría hacer algo como:

$('#LastName').(...) 

Sé que podría trabajar hacia fuera en este caso, y hackearlo manualmente, pero ¿hay una manera más ordenada?

+1

¿Esto no funciona? Cuando lo intento, parece generar el ID como esperaba que se llamara. Cuando ve el código fuente HTML en la página, ¿cuál es la salida de 'TextBoxFor()'? – Amadiere

+0

Esto funciona y genera el ID que esperaría, pero creo que si el marco puede funcionar para un cuadro de texto, podría funcionar en otros lugares ... Especialmente útil cuando el ID se está generando a una matriz para que termine con una ID como "Websites_0__Url". La forma manual funciona, creo que MVC debe saber esto por mí y me ahorra cometer errores;) –

Respuesta

7

Desde MVC4 hay una forma incorporada de hacerlo - @Html.IdFor().

Here is a sample de usarlo:

@Html.IdFor(m => m.Filters.Occurred.From) 

y el resultado es como

Filters_Occurred_From 
12

Creo que se puede hacer algo como:

<%=Html.TextBoxFor(x => x.LastName, new { id = "LastName" })%> 

Overloads of TextBoxFor

+0

Esto funcionaría en la mayoría de los casos, y creo que tenía el vínculo entre ID y Name demasiado firme en mi cabeza, por supuesto que pude modificarlo! Creo que tendría problemas cuando MVC resolviera los ID de control y terminaras con etc. –

+0

Otra forma de hacerlo es usar MvcContrib, que introduce el método IdFor, que te permite hacer <% = this.IdFor (x => x.LastName)%> ¡que es mágico! –

+0

En lugar de generar manualmente los identificadores de campo, recomendaría el enfoque de Colin o si no quiere depender de MVCContrib, entonces http://stackoverflow.com/questions/3065307/client-id-for-property-asp-net-mvc – JCallico

0

Como punto de interés, parece que el código Html.Textbox() generará un id, duplicando el nombre de control para cualquier cosa eso comienza con una letra (az). Sin embargo, si su 'nombre' comienza con un número, simplemente no molestará.

Esta es una "característica" fantástica que me ha causado dolor durante la última hora más o menos.

-1

Por defecto, su identificación de control es su valor de enlace modelo, también puede utilizar Firebug. selecciona el control y obtén el ID de control predeterminado.

Cuestiones relacionadas