Il secondo parametro object
per Html.EditorFor
non è per gli attributi HTML, è per dati di visualizzazione aggiuntivi. Gli helper EditorFor
non consentono la personalizzazione degli attributi HTML nel modo in cui, ad es. più specifici sono gli helper <input>
che prendono la maggior parte delle impostazioni dai metadati del modello (ad esempio [Attributes]
).
modo più semplice per "fissare" è, ovviamente, cadendo EditorFor
:
@Html.TextBoxFor(model => model.SireTag, new { data_typeahead = "dsfsdfsd" })
In alternativa, scrivere il proprio EditorTemplate per la proprietà. Ciò potrebbe consentire di utilizzare (o semplificare) la sintassi originale, recuperando il valore data_typeahead
da ViewData["data_typeahead"]
(o "typeahead").
un passo ulteriore, più avanzato, si può fare il vostro proprio Attribute
da applicare alle proprietà modello + il proprio ModelMetadataProvider
(o - più semplice - utilizzare IMetadataAware
, più su quello sotto) per trasformarlo in metadati che l'EditorTemplate potrebbe usare - questo al fine di rimuovere la decisione circa data-
attributi del tutto dalla tua vista, trasformando la vostra chiamata in:
@Html.EditorFor(model => model.SireTag)
... e il tuo modello in qualcosa di simile:
public class MyModel
{
[Typeahead("dsfsdfsd")]
public string SireTag { get; set; }
}
Example of this approach using IMetadataAware
Grazie mille che logica e soluzione funziona .. grande .... –
Anche se questa soluzione funziona, @MarosDimitrio ha pubblicato un overload del metodo 'EditorFor' che accetta attributi HTML. –