MVC liste Déroulante avec entity framework
J'ai créé un projet MVC à l'aide de entity framework code first. Mon modèle est tout simplement une forme qui recueille de l'information.
public class Application
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleInitial { get; set; }
public string LastName { get; set; }
public int SSN { get; set; }
public DateTime DOB { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State {get; set; }
public string Zip { get; set; }
public int HomePhone { get; set; }
public int BusinessPhone { get; set; }
public int MobilePhone { get; set; }
}
Mon but est de créer une liste déroulante avec tous les états, mais je trouve que cela est très difficile, étant donné que j'ai déjà créé la base de données via un échafaudage avec les vues et les contrôleurs. Est-il une façon simple de le faire et l'attacher avec la base de données existante? J'ai cherché pendant presque toute la journée avec pas de chance. Une présentation/explication de ce qu'il faut inclure pour le modèle/contrôleur/vue serait étonnant!
Mise à jour: j'ai créé un nouveau modèle nommé "État" avec des propriétés "Id" et "StateName" et ont créé de certains états dans la base de données. Dans ma "Demande" contrôleur à l'intérieur de l'action de création de la méthode que j'ai:
Contrôleur
public ActionResult Create()
{
ApplicationDbContext db = new ApplicationDbContext();
this.ViewData["Id"] = new SelectList(db.States.ToList(), "Id", "StateName");
return View();
}
Vue
@Html.DropDownList("Id")
Maintenant le problème est que je reçois ce message d'erreur " Il n'y a pas de ViewData élément de type 'IEnumerable' qui a la clé 'Id'." Serait vraiment heureux d'aider!
Eh bien, je ne suis pas sûr exactement comment aller à ce sujet. J'ai actuellement un tableau d'application (ci-dessus). Dois-je créer une autre table nommée "États" manuellement dans le concepteur ou avec le premier code? Après cela, j'aurais besoin de savoir comment extraire les données, puis de l'afficher sur mon formulaire existant.
de vérifier certains des tutoriels asp.net/mvc/overview/getting-started/...
J'ai déjà créé le formulaire via l'échafaudage et de la base de données avec les informations de l'application. Ma question est de savoir comment créer une liste déroulante et de l'ajouter à ma forme actuelle.
Vous avez besoin d'une table de base de données (ou d'une autre de stockage de données) qui contient la disposition des états. Ensuite, vous les procurer, de les affecter à un
SelectList
et l'utilisation @Html.DropDownFor()
pour sélectionner et affecter un à votre State
de la propriété.OriginalL'auteur dc922 | 2014-10-30
Vous devez vous connecter pour publier un commentaire.
Son assez simple. Ajouter un
IEnumerable<SelectListItem>
bien à votre modèle(Ici, je vous suggère de faire un ViewModel qui possèdent exactement les mêmes propriétés queApplication
avec le code ci-dessous inclus en tant que bien). Ensuite vous avez juste besoin de construire la liste et l'envoyer à votre vueJe suppose que vous voulez récupérer le
State
les valeurs de la db. Voici comment vous allez faire:De faire quelque chose comme ceci dans votre action:
Puis enfin, l'utilisation de Rasoir sur la vue pour afficher la liste Déroulante comme ce
Le 1er paramètre est la propriété du modèle de mise à jour, le 2ème est la liste de données, et le 3ème est le message par défaut qui sera affichée
Espère que cette aide.
OriginalL'auteur AbdulG
Créer une couche de données qui récupère une liste de ce que vous voulez. Puis utiliser EF pour obtenir tous les états.
Les membres de la table doit être une liste Unique des états.
Assurez-vous dans votre classe Viewmodel qui selectlist est une propriété publique.....et l'ensemble de ce que vous avez fait ci-dessus. Vous devez également provied une chaîne pour la sélection d'affichage de message de retour.
À votre avis, est-ce:
Application
?application.select(p=>p.State)
serait vide et vous ne serait jamais en mesure d'ajouter un nouveauApplication
!La première déclaration de ma réponse est que la couche de données doit être accessible. Si il n'y a rien dans la liste des applications, c'est à la couche de données pour la remplir. Certainement l'op est à l'aide d'une base de données de droit? Si non, alors la couche de données doit trouver une façon de fournir de la première série d'informations. C'est un modèle courant dans MVC (l'initialisation du modèle)... Elle est réalisée lorsqu'un contrôleur crée une instance du modèle et le repasse à l'affichage.
Travailler à travers votre logique encore une fois. Astuce: un tableau distinct est requis pour les états 🙂
Je ne peux pas montrer op init logique, vous avez raison. J'ai sans doute confondu par l'apparition d'un Modèle de Vue de la mise en œuvre et le déplacement tout à VM de toute façon. L'exemple, tente également de montrer séparer les Couches d'Accès aux Données, (Le troisième bloc de code pourrait se déplacer au dépôt de la classe). Mais vous avez raison, la machine virtuelle doit remplir tout (dans le null CTOR) pour le point de vue de fonctionner correctement..
Je ne pense toujours pas que votre obtenir. Un
Application
objet a uneState
de la propriété. Afin de créer unApplication
et l'enregistrer dans la base de données, vous devez sélectionner unState
. Vous interrogez leApplication
table pour les états. Si aucunApplication
s ont encore été créé, l'ensemble d'états est vide, donc vous ne pouvez pas affecter un état, de sorte que, par conséquent, vous ne pouvez pas l'enregistrer. Son Catch 22! Il suffit de modifier votre réponse-il séparéStates
table est requise et que vous créez la liste déroulante de laStates
table, pas leApplication
tableOriginalL'auteur John Peters
Code très simple, étape par étape,
1) Dans Le Cadre De L'Entité De La Classe
2) Dans Le Contrôleur De
3) En Vue
OU
OriginalL'auteur Saif
Je suppose, est un état modèle qui dispose d'un Identifiant et d'un StateName de la propriété.
Modification de la liste de ViewData["Etat"] afin d'assurer une liaison sur le POST.
Id est la valeur qui sera envoyée dans les données POST ie.. Etat = Id. Le StateName est ce qui va être affiché dans la liste de sélection. Donc pour votre modèle cela n'est pas exact que l'État est une chaîne de caractères. Il faut donc être
Alors à votre avis
OriginalL'auteur Matt Watson