c# - mvc - Atributo html condicional con Html Helper
mvc label for c# (1)
Si bien puedes usar
@Html.CheckBoxFor(m => m.Property, Model.IsAuthorized ? (object)new { @class = "input-class", disabled = "disabled" } : (object)new { @class = "input-class"});
para hacer esto en una línea de código, en su caso, puede fallar el enlace del modelo.
El método CheckBoxFor() genera 2 entradas, una casilla de verificación con value="True" y una entrada oculta con value="False" . En el caso en que el valor inicial de la Property sea true y se IsAuthorized el resultado es que la casilla de verificación está desactivada y no publicará ningún valor. Sin embargo, la entrada oculta se enviará y se vinculará a su modelo, lo que dará como resultado que la Property sea false (cuando debería ser true ).
Para manejar el enlace del modelo correctamente, necesitará el bloque if
@if (Model.IsAuthorized)
{
@Html.CheckBoxFor(x => m.Property, new { @class = "input-class" })
}
else
{
@Html.HiddenFor(m => m.Property) // necessary to post back the initial value
<input type="checkbox" @(Model.Property ? "checked" : null) disabled />
}
Estoy usando un helper Html para crear una casilla de verificación. A la espera de alguna condición, deseo agregar el atributo disabled al objeto htmlAttribute. Tengo el siguiente código:
@if (Model.IsAuthorized)
{
@Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class" })
}
else
{
@Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class", @disabled = "disabled" })
}
Me gustaría que este código sea más conciso. ¿Hay alguna manera de agregar condicionalmente ciertos atributos html en una línea / sin un bloque condicional?