MVC 4 -> Objekt senden

12/19/2014 21:41 FreewayC#1
Hi,

ich habe eine Index.cshtml Page die gebunden ist an mein Model "Depot.cs". Bei einem ActionResult bekommt diese Seite das Klassenobjekt übergeben und hat somit Zugriff auf eine Liste.

Die Liste beinhaltet mehrere Objekte einer anderen Modelklasse "Gegenstand".

Zum Verständnis: List<Gegenstand> depotList = new List<Gegenstand>();

In der Index.cshtml wird eine Tabelle dargestellt. Diese Tabelle wird durch eine foreach Schleife mit Daten aus der List gefüllt. Die Foreach gibt z.B. nur den Namen (Variable in Gegenstandklasse) aus.

Die Tabelle hat also nur eine Spalte und mehrere Zeilen. Nun möchte ich eine zweite Spalte hinzufügen die einen Button beinhaltet, wenn ich auf diesen Button klicke soll mir das Klassenobjekt (Gegenstand) zu meinem Controller gepostet werden.

Der Controller hat ein ActionResult [HttpPost] Details(Gegenstand ggObj). Dieses ActionResult gibt mir dann eine andere View aus und übermittel dann dieses Objekt, damit ich mehrere Details noch ausgeben kann.


Wenn dieser Weg nicht "smart" genug sein sollte, könnt Ihr es gerne in die Kommentare schreiben und mir einen anderen Lösungsvorschlag nennen, mit MVC bin ich noch nicht so vertraut (3 Tage exp). Wenn möglich keine Javascript AJAX Lösungsvorschläge :P

Mit freundlichen Grüßen
freewayc

EDIT: Hat sich erledigt,

Lösung:

Quote:
@model List<MvcApplication2.Models.Gegenstand>

@{
ViewBag.Title = "Index";
}
<table>
@foreach (var item in Model) {
<tr>
<td>
@item.Beschreibung
</td>
<td>
@Html.ActionLink("Show Details", "Details", new MvcApplication2.Models.Gegenstand { Beschreibung = item.Beschreibung })
</td>
</tr>
}
</table>
Quote:
[HttpGet]
public ActionResult Details(Gegenstand gegenstandObj)
{
return View(gegenstandObj);
}
Mit freundlichen Grüßen
freewayc
12/21/2014 02:26 Black Tiger ツ#2
Doch, gehört sich schon so in MVC. Nur ist das in dem Fall kein Model sondern ein ViewModel. :)
Das confused anfangs einen, da man im klassischen MVC zu keinem Zeitpunkt ein model in der View importiert.
Warum keine PartialView? Du kannst sogar mit SignlaR nen %-Wert live zurückgeben.