82 votes

Définir l'attribut de désactivation en fonction d'une condition pour Html.TextBoxFor

Je souhaite définir l'attribut de désactivation en fonction d'une condition pour Html.TextBoxFor dans asp.net MVC comme ci-dessous

 @Html.TextBoxFor(model => model.ExpireDate, new { style = "width: 70px;", maxlength = "10", id = "expire-date" disabled = (Model.ExpireDate == null ? "disable" : "") })

Cet assistant a deux sorties disabled="disabled " ou disabled="". les deux thèmes rendent la zone de texte désactivée.

Je veux désactiver la zone de texte si Model.ExpireDate == null sinon je veux l'activer

55voto

Shimmy Points 23393

En fait, le comportement interne traduit l'objet anonyme en dictionnaire. Donc, ce que je fais dans ces scénarios, c'est d'aller chercher un dictionnaire :

 @{
  var htmlAttributes = new Dictionary<string, object>
  {
    { "class" , "form-control"},
    { "placeholder", "Why?" }        
  };
  if (Model.IsDisabled)
  {
    htmlAttributes.Add("disabled", "disabled");
  }
}
@Html.EditorFor(m => m.Description, new { htmlAttributes = htmlAttributes })

Ou, comme Stephen l'a commenté ici :

 @Html.EditorFor(m => m.Description,
    Model.IsDisabled ? (object)new { disabled = "disabled" } : (object)new { })

23voto

user571646 Points 406

J'aime la méthode Darin. Mais moyen rapide de résoudre ce problème,

 Html.TextBox("Expiry", null, new { style = "width: 70px;", maxlength = "10", id = "expire-date", disabled = "disabled" }).ToString().Replace("disabled=\"disabled\"", (1 == 2 ? "" : "disabled=\"disabled\""))

16voto

mfsumption Points 233

Une approche simple que j'ai utilisée est le rendu conditionnel :

 @(Model.ExpireDate == null ? 
  @Html.TextBoxFor(m => m.ExpireDate, new { @disabled = "disabled" }) : 
  @Html.TextBoxFor(m => m.ExpireDate)
)

14voto

Andrei Tserakhau Points 496

Si vous n'utilisez pas d'aides html, vous pouvez utiliser une expression ternaire simple comme celle-ci :

 <input name="Field"
       value="@Model.Field" tabindex="0"
       @(Model.IsDisabledField ? "disabled=\"disabled\"" : "")>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X