buduję formę i muszę zachować przy użyciu inline warunkowego dodać atrybut readonly
HTML:Jak uniknąć powtarzających inline warunkowe definiowania htmlAttributes z 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)
można” t używaj warunku tylko dla wartości właściwości @readonly
, ponieważ nawet jeśli ustawiona jest na wartość null, zostanie ona wyrenderowana do klienta jako readonly=""
i to wystarczy, aby przeglądarka wykonała to pole tylko do odczytu.
Musi istnieć lepszy sposób na zrobienie tego niż wbudowane warunkowe dla każdego elementu formularza, aby dodać pojedynczy atrybut, prawda?
Można tworzyć własne metody rozszerzenie HtmlHelper - mówią '@ Html.ReadOnlyEditorFor (wyrażenie, htmlAttributes, IsReadOnly = true)' gdzie atrybut jest dodawany w zależności od wartości danej Parametr 'isReadonly' o nazwie –
@StephenMuecke jak zmodyfikować obiekt htmlAttributes w tym pomocniku, aby dodać/usunąć właściwość' @ readonly'? – travis
Zobacz [tę odpowiedź] (http://stackoverflow.com/questions/30127866/create-checkboxfor-mvc-helper-with-title-attribute-od-ododruk-modelu/30135407#30135407) na przykład –