Sto costruendo una forma e devo continuare a utilizzare una linea condizionale per aggiungere un attributo readonly
html:Come evitare i condizionali in linea ripetitive per la definizione di htmlAttributes Html.EditorFor()
@Html.LabelFor(model => model.EventDate)
<div class="row">
<div class="col-xs-3">
@Html.EditorFor(model => model.EventDate, new
{
htmlAttributes = Model.IsEditorReadOnly ?
(object)new { @class = "form-control input-lg", @type = "date", @readonly = "readonly" } :
(object)new { @class = "form-control input-lg", @type = "date" }
})
</div>
</div>
@Html.ValidationMessageFor(model => model.EventDate)
Si puo' t utilizzare un valore condizionale solo per il valore della proprietà @readonly
perché anche se è impostato su null, verrà reso disponibile al client come readonly=""
e ciò è sufficiente per consentire a un browser di rendere tale campo di sola lettura.
Ci deve essere un modo migliore per farlo rispetto a un condizionale in linea per ogni elemento del modulo solo per aggiungere un singolo attributo, giusto?
È possibile creare Possiedi un metodo di estensione HtmlHelper - dire '@ Html.ReadOnlyEditorFor (espressione, htmlAttributes, isReadonly = true)' in cui viene aggiunto l'attributo a seconda del valore della Parametro 'isReadonly' –
@StephenMuecke come modifico l'oggetto htmlAttributes all'interno di quell'helper per aggiungere/rimuovere la proprietà' @ readonly'? – travis
Refer [questa risposta] (http://stackoverflow.com/questions/30127866/create-checkboxfor-mvc-helper-with-title-attribute-from-model-description/30135407#30135407) per un esempio –