2013-04-17 2 views
6

In rasoio se avessi qualcosa di simile:classi CSS Addind al rasoio elementi

@Html.EditorFor(model => model.name) o anche: @Html.CheckBoxFor(m => m.RememberMe)

Come vorrei aggiungere una classe CSS o un id a loro? Ho letto degli aiutanti, ma dovrei fare un aiuto per ogni singolo elemento? non esiste un modo semplice per aggiungere una classe o un ID per radere gli elementi del modulo?

risposta

7

Non si può fare che con il EditorFor aiuto, semplicemente perché non si sa che cosa sarà usato il modello. Potresti ottenerlo ma dovrai scrivere un modello di editor personalizzato. Ad esempio, ciò potrebbe essere ottenuto sovrascrivendo default editor template e tenendo conto del secondo parametro che rappresenta una vista aggiuntiva.

Ecco un esempio di come un tale modello di editor personalizzato potrebbe cercare i tipi di stringa (~/Views/Shared/EditorTemplates/string.cshtml):

@Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue, 
    ViewData 
) 

e quindi si potrebbe usare in quel modo:

@Html.EditorFor(model => model.name, new { @class = "myclass" }) 

Con l'aiuto CheckBoxFor si potrebbe fare così:

@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myclass" }) 
+0

Ah, è ora che vada in pensione per oggi? Ora sei tutto finito :) Non ho visto la tua risposta fino a quando non ho postato il mio. –

+0

@vonv., Eppure, è tuo che è stato svalutato anche se pubblicato 2 minuti dopo :-) –

+0

Con questo post del blog, dato che punta a MVC2 per MVC 3? – TheWebs

0

Perché EditorFor non è specifico del tipo, non è possibile utilizzarlo su quelli.

Per CheckBoxFor, è possibile utilizzare:

@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myClass", id = "myID" }) 

Annotare il @ prima class perché è una parola chiave riservata in C#

+0

Questo non funzionerà con EditorFor. Il secondo argomento non fa ciò che la maggior parte della gente pensa che faccia. –

+0

@DarinDimitrov Buon urlo, aggiornato. – mattytommo

3

È facile per CheckboxFor, si c un fare in questo modo:

@Html.CheckBoxFor(m => m.RememberMe, new { @class="your_class", @id="the_id" }) 

E 'un po' più complicato con EditorFor in quanto non è supportato dalla scatola. Quello che voglio dire è che puoi creare un modello per ogni tipo e poi fare un TextBox per aggiungere attributi html (stessa sintassi come con CheckBoxFor). Potrebbe essere necessario farlo per ogni tipo che si desidera supportare.