Domanda

dal default con

<%: Html.EditorFor(m => m.ConfirmationHeadline) %>

L'output è:

 <input type="text" value="" 
        name="ConfirmationHeadline" id="ConfirmationHeadline" 
        class="text-box single-line">

Come si può vedere, l'ingresso aggiunge già un attributo class. Beh, questo non dovrebbe essere un problema, basta usare

<%: Html.EditorFor(m => m.ConfirmationHeadline, new { @class="span-11 last"}) %>

e dovrebbe funzionare ... err ... no!

questa uscita volontà esattamente lo stesso codice!

, però, funziona bene con Html.TextAreaFor()

Come posso rimuovere apparire il text-box single-line classe da sempre così le mie lezioni potrebbero essere aggiunti? qualsiasi T4 template dovrei cura?

Grazie per tutto l'aiuto.

È stato utile?

Soluzione

Non v'è alcun modo per personalizzare il valore dell'attributo class emessa quando utilizzando built-in Editor modelli attraverso il metodo EditorFor. E 'hard-codici il valore di classe (maggiori informazioni disponibili in questo sito: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html )

Sono disponibili due opzioni:

  1. Scrivi la tua modello personalizzato che supporta la funzionalità extra. Date un'occhiata qui per maggiori dettagli: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

  2. processare l'output del metodo EditorFor:

 <%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
        .Replace("class=\"text-box single-line\"", 
                 "class=\"text-box single-line span-11 last\"")) %>

Altri suggerimenti

In MCV 5.1 è possibile usufruire di htmlAttributes. Funziona come un fascino ...

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })

asp.net mvc crea un file chiamato site.css nella cartella dei contenuti. Ci si può vedere che la classe casella di testo è impostata su una larghezza di 30em per impostazione predefinita. Ripristina a qualcosa di più sano come 15em. La classe linea singola non sembra essere definita da nessuna parte.

È possibile utilizzare TextBoxFor invece

Ho avuto questo stesso problema e non mi piaceva nessuna delle soluzioni di cui sopra. Ho anche trovato un post simile qui , ma non mi piaceva quelle soluzioni sia. Dopo un po 'utensili in giro, ho trovato qualcosa che mi piaceva, che mi permetta di continuare a utilizzare i modelli Editor (che è qualcosa che si dovrebbe cercare di approfittare di ogni volta che potete). Ho postato la soluzione qui

provare questo codice

@Html.Raw(
    Html.EditorFor(m => m.DataInicial).ToString()
    .Replace(
        "\"text-box single-line\"",
        "\"form-control text-box single-line\""))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top