0

Ein bisschen neu bei .Net + MVC dev.Weitergabe desselben Model/ViewModel an mehrere Partial Views (Registerkarten in Jquery)

Hintergrund ... in meiner Lil App habe ich 3 Tabellen ... Anwendungen, Datenbanken und app_db_support Tabelle. Die 3. Tabelle hat fks zu den ersten 2 und speichert Assoziationen.

wollen ... neue Anwendungen hinzuzufügen und die damit verbundenen dbs über eine Jquery Form Setup Registerkarten.

Ansatz ... versucht, Teilansichten in den Registerkarten zu verwenden, um Anwendungen, Datenbanken und zugehörige Support-Informationen zu trennen.

Main.cshtml Code

<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> 

Frage ... Ich möchte in der Lage sein, ein Ansichtsmodell für alle zugrunde liegenden Modelle zu verwenden und die der Teiltöne zu jedem passieren. Da ich auf den Steuerelementen neu bin, bin ich ein bisschen verloren, wie ich die gleiche Instanz des ViewModels weitergeben könnte, sagen MyAppViewModel, das die 3 Modelle enthalten könnte. Da die Tabs alle mit einer einzigen App verknüpft sind, sollte ein einzelnes Viewmodel damit umgehen können.

Alternativen ... wieder, wenn es neue Wege gibt, um darüber zu gehen (daher Hintergrundinfo), würde ich mich freuen, Alternativen zu sehen, besonders wenn sie einfacher sind. :)

Vielen Dank im Voraus!

Antwort

0

Hier ist eine vereinfachte Version von dem, was Sie tun könnten:

Ansichtsmodell

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

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

-Controller

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"); 
} 

Ansicht

@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 für die Anregung! Einige der Knoten geglättet ... – MAR

+0

Gern geschehen. Wenn das eine Lösung wäre, bitte als Lösung markieren :) –

Verwandte Themen