MVC DropDownListfor() Bases
J'ai un Modèle qui se composent d'information des Employés. Dans mon modèle il y a une propriété appelée Ville qui définissent la ville de Salarié dans lequel il vit. Le propery est indiqué ci-dessous
public string City{get;set;}
Maintenant, j'ai une vue qui contient un formulaire qui sera comblé par un employé de s'inscrire. Je veux utiliser une liste déroulante de sélection des villes. Je pense que le code ci-dessous sera utilisé pour déroulante que j'ai découvert. Mon nom de modèle est Employé.
@Html.DropDownListFor(m=>m.City,new SelectList())
Veuillez me dire que "est-il possible de définir les options pour dropdownlist dans SelectList() la méthode directement Comme ... en html?"
Si non, où puis-je définir la classe de cette liste déroulante, à qui s'adresser et où se rendre.Je ne sais pas où pour définir les valeurs? Je suis très confus parce que c'est mvc et nous avons pour séparer les préoccupations et je pense que nous ne pouvons définir n'importe quoi à n'importe où?
Merci d'avance..
stackoverflow.com/questions/10484774/dropdown-in-mvc
OriginalL'auteur Sometimes Code | 2013-03-04
Vous devez vous connecter pour publier un commentaire.
Vous avez au moins deux options:
1.) Ajouter une liste, un tableau, ou tout autre type de collection des villes pour votre modèle de
2.) Ajouter un SelectList bien à votre modèle
Option 1 peut être quelque chose aussi simple qu'un tableau de chaînes de caractères, ou peut être, disons, un
IEnumerable
deCity
objets. Vous devez, pour transformer cette propriété à une collection deSelectListItem
objets dans la vue dans le cadre de laDropDownList
de liaison.L'Option 2 a l'avantage d'être capable de la liaison directe à la
DropDownList
, mais exige que vous construisez la liste à l'intérieur de la méthode d'action.Puis à la fin le résultat est le même, c'est juste une question de comment pédant que vous voulez à propos de SoC.
Par exemple (en supposant que vous ajoutez une propriété appelée
Cities
):EDIT:
Pour répondre à votre commentaire, j'ai du faire quelques hypothèses. Je vais supposer que vous avez un modèle appelé
EmployeeModel
. Ce modèle possède une propriété,City
, qui est une simple chaîne de caractères. Donc, c'est une partielle de votre modèle, comme je l'assume:Donc, si vous avez besoin d'ajouter une propriété pour la liaison à votre liste déroulante, vous effectuez l'une des opérations suivantes:
ou
Cette nouvelle propriété contient la liste des villes que vous permettez à votre utilisateur(s) de choisir à partir.
Si vous choisissez la première option, vous pouvez charger l'interface IEnumerable de votre banque de données, puis utiliser le premier exemple ci-dessus, à votre avis, qui utilise LINQ to projet de chaque chaîne dans le
Cities
propriété dans une nouvelleSelectListItem
objet.Si vous choisissez la deuxième option, vous construire un
SelectList
dans l'action avant de passer le modèle de la vue. Ce n'est pas très difficile, comme la classe fournit un constructeur qui prend unIEnumerable
(votre liste de villes) et la "valeur sélectionnée," qui sera leCity
propriété (voir http://msdn.microsoft.com/en-us/library/dd460123%28v=vs.108%29.aspx). Votre code devrait ressembler à quelque chose comme:Bien entendu, cela suppose que vous avez une méthode d'assistance (
GetCities()
) pour charger vos villes où ils sont stockés. Votre point de vue aurait alors quelque chose comme ceci:Le moteur d'affichage utilise ensuite ces
SelectListItem
s pour construire le<select>
élément et c'est<option>
éléments.OriginalL'auteur Tieson T.
Vous pourriez avoir dans votre modèle, il est rapidement atteint, bien que je ne le recommande pas:
...et votre point de vue
Je pense que la meilleure place pour quelque chose comme ceci (mais est un peu plus compliqué) est votre propre
htmlhelper
et l'utilisation pourrait ressembler à quelque chose comme:Vous pourriez mettre en cache les villes bien, et il conserve les données de l'INTERFACE et de travail de vos modèles.
Si vous voulez en savoir plus sur la création de vos propres aides, je vous suggère un peu de [lire].Un
OriginalL'auteur Phil Cooper