La liaison des valeurs du dictionnaire dans ASP.NET MVC est généralement simple, mais nécessite le respect de conventions de syntaxe spécifiques pour une liaison réussie.
Dans la classe modèle, vous devez définir l'attribut dictionnaire et l'initialiser avec la valeur :
<code class="language-csharp">public class MyModel { public Dictionary<string, string> Params { get; set; } public MyModel() { Params = new Dictionary<string, string>(); Params.Add("Value1", "1"); Params.Add("Value2", "2"); Params.Add("Value3", "3"); } }</code>
Dans une vue, liez-vous aux clés et valeurs du dictionnaire en utilisant la syntaxe suivante :
<code class="language-html">@foreach (KeyValuePair<string, string> kvp in Model.Params) { <tr><td> @Html.TextBox("Params[" + kvp.Key + "]") </td> </tr> }</code>
Cette syntaxe garantit que la structure d'attribut de nom de chaque champ de saisie est "Params[key]", correspondant à la syntaxe de l'indexeur utilisée dans la liaison de modèle.
Dans ASP.NET MVC 4, le classeur de modèles par défaut lie les dictionnaires en utilisant la syntaxe typique de l'indexeur de dictionnaire (propriété[clé]). Par conséquent, la balise suivante sera liée avec succès à Dictionary<string, string>
:
<code class="language-html">@foreach (var kvp in Model.MyDictionary) { <input type="checkbox" name="@string.Format("MyDictionary[{0}]", kvp.Key)" checked="@kvp.Value" /> }</code>
Cela vous permet de lier des cases à cocher aux éléments du dictionnaire. Notez que checked="@kvp.Value"
suppose que kvp.Value
est un booléen. Si kvp.Value
est une chaîne, vous devez ajuster cette partie du code en fonction de la situation réelle, par exemple en utilisant checked="@(kvp.Value == "true")"
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!