À L'Aide De Html.DropDownList sur une SelectList
J'ai le code suivant à l'intérieur de ma classe du modèle :-
public class PageOptions
{
public PageOptions()
{
int size = Int32.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"]);
NameSelectionOptions = new SelectList(
new List<SelectListItem> {
new SelectListItem { Text=size.ToString(), Value = size.ToString()},
new SelectListItem { Text="50", Value = "50"},
new SelectListItem { Text="100", Value = "100"},
new SelectListItem { Text="200", Value = "200"},
new SelectListItem { Text="500", Value = "500"}
}, "Value", "Text");
}
public SelectList NameSelectionOptions { get; set; }
}
}
mais comment je peux afficher le SelectList à l'intérieur d'une page Html.DropDownList ? et le réglage de la valeur par défaut valueto la taille?
Grâce
- Après 3 ans, êtes-vous satisfait de la réponse? 🙂
- Rubrique en 5ème année maintenant... êtes-vous heureux encore? 🙂
Vous devez vous connecter pour publier un commentaire.
Il vous suffit de passer la sélection voulue comme un 4ème paramètre à la
SelectList
constructeur:C'est beaucoup plus souple que la sélection d'un élément spécifique dans la liste.
Il existe plusieurs options pour la liaison d'une liste à la vue. Vous pouvez utiliser une propriété du ViewModel, cependant la pratique standard (comme par Microsoft échafaudage modèles) est à transmettre les listes déroulantes pour une vue dans une ViewBag entrée du même nom que le Modèle de la propriété. Cela a l'avantage supplémentaire de automatiquement la liaison la plus simple
@Html.DropDownList("Size")
version à la fois un Modèle de propriété appeléeSize
et le liste dansViewBag.Size
.par exemple
Dans Le Contrôleur:
Où viewModel contient toutes les propriétés que vous souhaitez modifier (y compris
Size
).En Vue:
ou si vous préférez le fortement typé version.
En tout cas, le nom cohérentes aidera à éviter les problèmes.
Les valeurs par défaut peuvent aller dans le ViewBag, mais le choix doit être lié à ton ViewModel de sorte que vous pouvez utiliser le même ViewModel pour recevoir posté le retour des valeurs.
Mise à jour:
Si vous ne souhaitez pas lier la valeur actuelle pour rien (comme par commentaire), il vous suffit de le
ViewBag.Size
ensemble pour vousSelectList
par le contrôleur et c'est la Vue. Vous n'avez pas besoin d'une valeur dans le Modèle.La sélection par défaut sera la sélection (4e paramètre, la taille) dans
new SelectList()
ci-dessus.Simplement ajouter Sélectionné de la propriété en elle:
Modèle:
Action:
Fortement Typé Vue:
si vous voulez faire sans modification de votre modèle actuel de vue, puis, créer une instance à l'intérieur de la vue et de passer comme ceci:
mais vous devriez ajouter PageOptions
SelectList
comme propriété dans votre Modèle et de l'utiliser, je ne recommande pas de le faire directement dans Vue.Mise À Jour (À L'Aide De ViewBag):
avec ViewBag vous pouvez le faire de cette façon:
en Vue: