2011-09-01 11 views
5

Cercando di ignorare l'attributo "id" di Html.TextBoxFor (MVC 3) in modo che dovrebbe essere simile:ignorare l'attributo "id" di Html.EditorFor - non funziona

<input type="text" name="Password" id="@idPasswordTextBox" value="@Model.Password" /> 

dove "idPasswordTextBox" è definito come: string idPasswordTextBox = "passwordText_"[email protected]; nello stesso file cshtml.

Questo sta lavorando bene se uso come:

<input type="text" name="Password" id="@idPasswordTextBox" value="@Model.Password" /> 

ma non funziona se lo faccio in questo modo:

@Html.TextBoxFor(model => model.Password, new { id = "@idPasswordTextBox" }) 

Sembra che l'attributo "id" sta ottenendo incasinato. Cosa mi manca? Qualcuno può aiutare? Sono una nuova ape in ASP.net.

Grazie in anticipo.

+0

Qual è esattamente l'output che si ottiene? Immagino che l'ID sia impostato sulla frase esatta @idPasswordTextBox. – NotMe

+0

Non riesco a quale sia l'output esatto in quanto questa è una finestra di dialogo. Ma questo è ciò che sto cercando di fare: (provare a disabilitare/abilitare le caselle di testo in base a una casella di controllo): $ (document) .ready (function() {$ ("# @ idCheckBox"). Click (function() {if ($ (this) .attr ('checked')) {$ ("# @ idPasswordTextBox"). removeAttr ('disabled');} else {$ ("# @ idPasswordTextBox"). attr ('disabilitato', 'Disabilitato'); } }); }); – Patty

+0

Cosa importa che sia un dialogo? Dovresti comunque essere in grado di ispezionare l'html generato ... Indipendentemente da ciò, basta rimuovere le virgolette attorno a @idPasswordTextBox – NotMe

risposta

5

Scusa, avrei dovuto guardare con più attenzione. Non vuoi virgolette su @idPasswordTextBox nel tuo metodo TextBoxFor. Viene eseguito sul server, quindi quando si inseriscono virgolette attorno al nome viene trattato come una stringa letterale. Rimuovi le virgolette e rimuovi il simbolo @ davanti all'ID e funzionerà.

È importante ricordare sempre cosa è in esecuzione sul server e cosa è in esecuzione sul client.

@Html.TextBoxFor(model => model.Password, new { id = @idPasswordTextBox }) 
+0

Non sono in grado di ottenere l'output esatto in quanto questa è una finestra di dialogo. Ma questo è ciò che sto cercando di fare: (provare a disabilitare/abilitare le caselle di testo in base a una casella di controllo): $ (document) .ready (function() { \t \t $ ("# @ idCheckBox"). (function() { \t \t \t if ($ (this) .attr ('controllato')) { \t \t \t \t $ ("# @ idPasswordTextBox") removeAttr ('disabilitato');. \t \t \t \t \t \t \t} altro { \t \t \t \t $ ("# @ idPasswordTextBox"). Attr ('disabilitato', 'disabilitato'); \t \t \t} \t \t}); }); – Patty

+0

0 verso il basso voto accettare \t @ Html.TextBoxFor (modello => model.Password, nuovo {@ id = "@idPasswordTextBox"}) non ha funzionato neanche – Patty

+0

modificato la mia risposta – Jason

Problemi correlati