Comment modifier plusieurs modèles dans un seul Rasoir Vue
Je suis nouveau sur MVC3, j'ai une de plusieurs modèles comme BussinessDetails
,ContactPerson
,ServiceArea
,Address
et beaucoup plus de modèles. J'ai une vue unique de la page où partagé afficher les pages comme Contacts
,BusinessDetails
,Address
,ServiceArea
etc.ce sont toutes dans des onglets. Ils disposent de leurs propres modèles.
Mon problème est que la façon de modifier plusieurs modèles dans une même modifier l'affichage de la page. Avant d'envoyer ce post, je prendre l'aide de l'MVC3 "Magasin de Musique" par exemple, mais il y a un seul modèle ALBUM
et ils donnent de l'opération d'édition pour un modèle si il y a un ou plusieurs modèle de comment je doit modifier dans le même point de vue page.
J'ai déjà fait un parent d'affaires de la spécification de la classe. C'est à partir de MVC "Magasin de Musique"
public ActionResult Edit(int id) {
Album album = db.Albums.Find(id);
ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
return View(album);
}
[HttpPost]
public ActionResult Edit(Album album) {
if (ModelState.IsValid) {
db.Entry(album).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
return View(album);
}
Dans HTTP POST
il n'est que sur le modèle ALBUM
si il n'y a plus de modèles comment je suis d'effectuer les opérations d'édition sur plusieurs modèles et de point de vue?
OriginalL'auteur user1196392 | 2012-05-23
Vous devez vous connecter pour publier un commentaire.
Vous devez inclure les autres Viewmodel dans l'un des principaux
CompositeModel
commeEnvoyer à votre point de vue comme
Modifier votre point de vue à prendre en compte le nouveau type de modèle
Pour faire référence aux propriétés de la sous-modèles, vous pouvez utiliser la syntaxe comme celle-ci
ou vous pouvez créer une vue dans le
EditorTemplates
dossier qui prend un sous-modèle commeAlbumModel
et l'utilisationEditorFor
comme ceLe modèle devrait ressembler à quelque chose comme ceci
Maintenant, il vous suffit de poster
CompositeModel
retour à la manette, puis enregistrer tous les sous-modèles et maintenant Bob's your uncle!C'était juste pseudo-code, de ne pas être pris à la lettre, vous aurez à comprendre comment obtenir les corriger ou de les poster le nouveau code que vous essayez de sorte que nous pouvons aider les autres. Garder la boucle de rétroaction 🙂
OriginalL'auteur
Vous aurez besoin de créer un Modèle d'Affichage qui contient à la fois des types que vous avez besoin. Quelque chose comme ceci (en supposant que vous êtes d'édition à la fois un Album et un Artiste):
Puis changer de vue utiliser le nouveau modèle comme suit:
Puis changer votre méthode Get pour être quelque chose comme:
Puis changer votre méthode Post pour prendre la
MyModel
type:En supposant que votre point de vue a quelque chose comme (enveloppé dans un formulaire avec un bouton de soumission de cours):
Pouvez-vous ne pas appeler quelque chose comme
Save
sur vos classes de données? Quelque chose commemodel.Album.Save();
de chaque type dans le modèle.OriginalL'auteur
Une autre méthode consiste à utiliser le C# Tuples
http://www.dotnetperls.com/tuple
De votre point de vue et contrôleur de définir un tuple est une liste de vos classes(modèles)
OriginalL'auteur