0

Un peu nouveau pour .Net + MVC dev.Transmettre le même modèle/ViewModel à plusieurs vues partielles (onglets dans jquery)

contexte ... dans mon application lil j'ai 3 tables ... applications, bases de données, et app_db_support table. La 3ème table a des fc aux deux premières et stocke les associations.

Voulez-vous ... ajouter de nouvelles applications et des dbs associées via une configuration de formulaire jquery à onglets. En essayant d'utiliser des vues partielles dans les onglets pour séparer les applications, les bases de données et les informations de support associées.

Code Main.cshtml

<div id="dialog" title="Add Application" style="display: none"> 
    <div id="tabs"> 
     <ul> 
      <li><a href="#application">Application</a></li> 
      <li><a href="#database">Database</a></li> 
     </ul> 

     <div id="application"> 
      @Html.Partial("_AddAppForm", ...); 
     </div> 

     <div id="database"> 
      <p>DB Partial view here </p> 
     </div> 
    </div> 
</div> 

Question ... Je voudrais être en mesure d'utiliser un ViewModel pour tous les modèles sous-jacents et de passer à ce que chacun des partials. Étant nouveau sur les contrôles, je suis un peu perdu sur la façon de passer la même instance du ViewModel, disons MyAppViewModel qui pourrait avoir les 3 modèles dedans. Puisque les onglets seront tous associés à une seule application, un seul viewmodel devrait être capable de le gérer. Étant donné qu'il y a de meilleures façons d'y parvenir (d'où les informations de base), je serais heureux de trouver des alternatives, surtout si elles sont plus faciles. :)

Merci d'avance !!

Répondre

0

est ici une version simplifiée de ce que vous pourriez faire:

ViewModel

namespace Project.ViewModels 
{ 
    public class AppsViewModel 
    {   
     public IEnumerable<Applicaiton> Applications { get; set; } 

     public IEnumerable<Database> Databases { get; set; } 
    } 
} 

Contrôleur

public ActionResult Index() 
{ 
    AppsViewModel vm = new AppsViewModel(); 
    using (DatabaseContext db = new DatabaseContext()){ 
     vm.Applications = db.Applications; 
     vm.Databases = db.Databases; 
    } 

    return View(vm); 
} 

[HttpPost] 
public ActionResult AddApplication(AppsViewModel model) 
{ 
    using (DatabaseContext db = new DatabaseContext()){ 
     db.Applications.Add(model.Application); 
     db.SaveChanges(); 
    } 

    return RedirectToAction("Index"); 
} 

[HttpPost] 
public ActionResult AddDatabase(AppsViewModel model) 
{ 
    using (DatabaseContext db = new DatabaseContext()){ 
     db.Databases.Add(model.Database); 
     db.SaveChanges(); 
    } 

    return RedirectToAction("Index"); 
} 

Voir

@model Project.AppsViewModel 
<div id="dialog" title="Add Application" style="display: none"> 
    <div id="tabs"> 
     <ul> 
      <li><a href="#application">Application</a></li> 
      <li><a href="#database">Database</a></li> 
     </ul> 

     <div id="application"> 
      @foreach (var app in Model.Applications){ 
       //render your view 
      } 
     </div> 

     <div id="database"> 
      @foreach (var app in Model.Databases){ 
       //render your view 
      } 
     </div> 
    </div> 
</div> 
+0

thx pour la suggestion! Redresser certains des noeuds ... – MAR

+0

Vous êtes les bienvenus. Si c'était une solution s'il vous plaît marquer comme la solution :) –