2013-10-10 5 views
8

Wenn ich eine Textbox wie folgt definieren:id des Elements für JavaScript in MVC4/Razor von verschachteltes Objekt in Modell Get

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

es wird ein input Element mit idContact_HomePhone erzeugen.

Ist es möglich, diese id in JavaScript ohne Hardcoding Contact_HomePhone zu bekommen?

Dies ist ein Beispiel dafür, wo ich brauche diese id dynamisch in JavaScript:

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

(Ich weiß, wie die Namen der Eigenschaften erhalten Reflexion verwenden, würde aber immer noch _ codieren müssen Contact und HomePhone zu verketten.)

Antwort

14

auf diese Weise versuchen, mit Html.IdFor Sie die ID vom Helfer erzeugt bekommen können.

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

Präfix Sie es einfach mit # für jquery, um ihn abzuholen.

Aber Sie können das Plugin auch mit Klassenselektor binden, sagen Sie zum Beispiel, wenn Sie viele solche Telefonfelder haben, können Sie eine gemeinsame Klasse für alle diese TextBoxen und Bindemasken-Plugin mit dem Klassenselektor binden, dies würde die Bestimmung zu vermeiden Verwenden Sie die obige Methode und verwenden Sie einen gemeinsamen Selektor.

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

und ohne sich Gedanken über die ID zu machen, können Sie sie einfach binden.

$('.phoneField').mask("(999) 999-9999"); 
Verwandte Themen