2009-09-26 3 views
0

Dans mon contrôleur, je suis en train de ma valeur à true:Comment décider de quoi radioButton est activé dans une vue?

ViewData[itemName] = true; 

Alors à mon avis, je suis en train de définir l'élément avec vrai sélectionner le bouton radio. J'ai essayé ce qui suit:

<%= Html.RadioButton("default",item.Name, 
      ((bool)ViewData[item.Name])==null ? false:true) %> 

    <%= Html.RadioButton("default",item.Name, 
      ViewData[item.Name]) %> 

    <%= Html.RadioButton("default",item.Name, 
      ViewData["defaultItem"]==item.Name) %> 
    //In the case above I assigned ViewData["defaultItem"] = itemName; 

des idées?

+0

Voir aussi http://stackoverflow.com/questions/263336/asp-net-mvc-radio-button-state –

Répondre

1

Je ne l'ai pas regardé pour ce problème du tout, mais je pensais donner un coup de main dans le compactage un peu le code.

Pour faire le suivi d'un peu moins bavard:

 <% if (ViewData[item.Name] == null) 
      { %> 
      <%= Html.RadioButton("defaultNAME", item.Name)%> 
     <% } 
      else 
      {%> 
      <%= Html.RadioButton("defaultNAME", item.Name, 
            (bool)ViewData[item.Name])%> 
     <% } %> 

Vous pouvez faire ceci:

<%= ViewData[item.Name] == null ? Html.RadioButton("defaultNAME", item.Name) : Html.RadioButton("defaultNAME", item.Name, (bool)ViewData[item.Name]) %> 

Je sais que cela ne suffit pas à votre question tout, mais étant donné que cela est assez Code straightforeward , Je pense que c'est un bon candidat pour serrer ces huit ou neuf lignes en une seule.

Bonne chance!

EDIT:

J'ai réalisé après la présentation que cela peut être encore plus courte. Un seul appel à Html.RadioButton() est nécessaire. En utilisant l'opérateur null coalescing, nous pouvons simplement saisir une valeur par défaut si ViewData [item.Name] est null. N'hésitez pas à coder en dur votre valeur par défaut au lieu de la spécifier dans une variable. Je l'ai fait juste pour rendre l'exemple plus clair. Les trois blocs de code sont sémantiquement équivalents (bien qu'ils devraient produire une IL assez différente, étant donné que le premier bloc tombe dans et hors du balisage ASP).

+0

Exactement ce que je cherchais. Merci Josh !!! – Geo

0

Dans votre deuxième RadioButton, vous ne spécifiez pas de condition booléenne pour "IsChecked".

Il devrait ressembler à ceci:

<%= Html.RadioButton("default",item.Name, 
      ViewData[item.Name] == "something") %> 
+0

J'ai essayé cela sur la troisième section du code ci-dessus et cela n'a pas fonctionné. Je pensais que ça allait, cependant. Merci. – Geo

Questions connexes