Charger les Données dans DropDownList dans le Mode Créer MVC 4
Je suis en train de remplir les données d'un tableau dans la liste déroulante à l'aide de MVC4. Essayer de comprendre comment obtenir toutes les langues " les titres dans la liste Déroulante dans le mode d'Édition.
Modèles:
public class CategoryLanguage
{
public int ID { get; set; }
public int LanguageID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
public class Language
{
public int ID { get; set; }
public string Title { get; set; }
}
Contrôleur:
public ActionResult Create()
{
using (MyDBContext db = new MyDBContext())
{
ViewBag.ID = new SelectList(db.Languages, "ID", "Title");
return View();
}
}
//
//POST: /Emp/Create
[HttpPost]
public ActionResult Create(CategoryLanguage newCatLang)
{
using (MyDBContext db = new MyDBContext())
{
if (ModelState.IsValid)
{
db.CategoryLanguages.Add(newCatLang);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ID = new SelectList(db.Languages, "ID", "Title", newCatLang.LanguageID);
return View(newCatLang);
}
}
Vue:
@model MultilanguageCategories.CORE.Models.CategoryLanguage
@{
ViewBag.Title = "Create";
}
<h2>Add New Item</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.DropDownList("ID", "--Select--")
}
Essayer de comprendre comment obtenir toutes les langues " des titres dans la liste Déroulante lors de la création de nouveaux CategoryLanguage entité. Le message d'erreur indique: "L'opération ne peut pas être réalisée car le DbContext a été disposé." et cette ligne marquée: @Html.DropDownList("ID", "--Select--")
au lieu de
u peut me donner un exemple?
Ajouter un champ selectlist champ dans
Pouvez-vous faire plus clair ?
vérifier ma réponse. peut-être cela peut vous aider à résoudre votre problème.
ViewBag
essayez de l'enregistrer dans Model
u peut me donner un exemple?
Ajouter un champ selectlist champ dans
Model
puis essayez comme ceci Model.ID=Select...
Pouvez-vous faire plus clair ?
vérifier ma réponse. peut-être cela peut vous aider à résoudre votre problème.
OriginalL'auteur Stiliyan Vasilev | 2014-01-31
Vous devez vous connecter pour publier un commentaire.
Changer votre méthode get "Créer" comme mentionné ci-dessous :
Maintenant, vous pouvez utiliser DropDownListFor comme mentionné ci-dessous :
languages
à l'extérieurusing
blocÊtes-vous sûr de cela ? Coz avant de poster la réponse ici, j'ai d'abord écrire des exemples de code et de test.
Grand, votre code fonctionne parfaitement dans mon cas SpiderCode. Merci!
OriginalL'auteur SpiderCode
vous êtes proche...
Vous devez Ajouter les langues de la liste de sélection pour le viewbag (qui vous l'ai déjà fait, mais avec un mal nommée clés)
ie:
ViewBag.LanguagesList = new SelectList(db.Languages, "ID", "Title");
si vous voulez un champ vide c'est assez facile:
La DropdownList devrait être une propriété dans le modèle.
Comme il semble que vous utilisez une Entité Cadre de la classe comme votre modèle, vous devez vous assurer que le contexte n'est pas disposé avant le point de vue est rendu.
Comme Par Microsoft exemple lien instancier le cadre en haut de la manette, et la chute de l'instruction à l'aide de la méthode Create.
ie :
Je vais supposer que c'est parce que le Modèle utilisé est une Entité Cadre de la classe, et le contexte est disposé avant le point de vue est chargé. Si vous regardez de Microsoft Exemple ici: lien Vous remarquerez que le contexte est construit au sommet de la classe de contrôleur, et il n'est pas à l'aide de déclaration (de sorte qu'elle éliminés lorsque le contrôleur reçoit disposé - qui n'arrive pas jusqu'à ce que après la vue est rendue). Je vais mettre à jour ma réponse à démontrer.
OriginalL'auteur James S