2013-10-10 6 views
8

Se io definisco una casella di testo come questo:Ottenere id di elemento di JavaScript MVC4/Razor dall'oggetto nidificato nel modello di

@Html.TextBoxFor(m => m.Contact.HomePhone) 

si genererà un elemento input con idContact_HomePhone.

E 'possibile ottenere questo in JavaScript senza hardcoding Contact_HomePhone?

Questo è un esempio di cui ho bisogno di questo id dinamicamente in JavaScript:

$("#Contact_HomePhone").mask("(999) 999-9999"); 

(so come ottenere i nomi di proprietà utilizzando la riflessione, ma dovrebbe ancora hardcode _ per concatenare Contact e HomePhone.)

risposta

14

Provare in questo modo, utilizzando Html.IdFor è possibile ottenere l'ID generato dall'assistente.

$('#@Html.IdFor(m => m.Contact.HomePhone)').mask("(999) 999-9999"); 

Basta premettere ad essa # per jQuery per raccoglierlo.

Ma si può anche legare il plugin tramite selettore di classe, diciamo per esempio se si dispone di molti di questi campi telefonici è possibile fornire una classe comune a tutte quelle caselle di testo e si legano plug-in maschera ad esso utilizzando il selettore di classe, questo eviterebbe la determinazione l'id che usa il metodo sopra e usa un selettore comune.

@Html.TextBoxFor(m => m.Contact.HomePhone, null, new { @class = "phoneField"}); 

e senza preoccuparsi della id si può semplicemente legarli.

$('.phoneField').mask("(999) 999-9999"); 
Problemi correlati