Ich kratze meinen Kopf von vergangenen zwei Tagen, einschließlich Informationen für das, was ich versuche zu bauen.Wie bekomme ich Wert für IList <model> über Formular und übergeben Sie es an den Controller in MVC
Funktionalität Ich versuche zu bauen: einfache Reise-Manager-Anwendung
Get Werte für Reise Namen und Anzahl der Personen auf Index-Seite und senden Sie es, die in einer anderen Form führt (View), wo nach Anzahl der Personen textboxen werden erzeugt und geben diese Formulardaten an einen anderen Controller weiter, wo ich sie in der Datenbank speichern werde.
Modelle: Reise
public class Trip
{
public Trip()
{
//people = new List<People>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Income { get; set; }
public decimal Expense { get; set; }
public int NumberOfPeople { get; set; }
public virtual IList<People> people{ get; set; }
}
Menschen
public class People
{
public int Id { get; set; }
public int TripId { get; set; }
[DisplayName("Name:")]
public string Name { get; set; }
[DisplayName("Initial Deposite:")]
public decimal InitialDeposite { get; set; }
}
Dies ist, wie Index.cshtml Blick aussieht, hier nehme ich zwei Eingänge Name und Anzahl der Personen:
@model TripManager.Models.Trip
@{
ViewBag.Title = "Welcome to Trip Manager";
}
<div class="jumbotron">
<h1>Trip Manager</h1>
<p class="lead">Trip Manager helps you calculate your group trip expenses in ease.</p>
</div>
<div class="row">
<div class="col-md-12 text-center">
@using (Html.BeginForm("Index","Trip"))
{
@Html.AntiForgeryToken();
@*@Html.HiddenFor(m=>m.Id)*@
<p class="text-info">@Html.LabelFor(m => m.Name)</p>
<p class="glyphicon-search">@Html.EditorFor(m => m.Name) @Html.ValidationMessageFor(m => m.Name)</p>
<p class="text-info">@Html.LabelFor(m => m.NumberOfPeople)</p>
<p class="glyphicon-search">@Html.EditorFor(m => m.NumberOfPeople) @Html.ValidationMessageFor(m => m.NumberOfPeople)</p>
<p><input type = "submit" class="btn-success" name="btnTripInit" value="Go Trip" /></p>
}
</div>
</div>
diese Eingabe Passing Ansicht über die Steuerung Post Aktion Index (Trip Reise), die als unten member.cshtml,
public ActionResult Index(Trip trip)
{
if (!ModelState.IsValid)
{
return View(trip);
}
var mytrip = new Trip();
mytrip.Name = trip.Name;
mytrip.NumberOfPeople = trip.NumberOfPeople;
mytrip.people = new List<People>(trip.NumberOfPeople);
return View("Members", trip);
}
und members.cshtml Ansicht ist, wie weiter unten ... hier i Textfeld am Erzeugen IList in Reise Modell .... Eine Textbox für Namen und andere für Initial Deposite
@model TripManager.Models.Trip
{
@ViewBag.Title = "Please Enter Members Details";
}
<div class="row">
<div class="col-md-12 text-center">
@{
using (Html.BeginForm("FeedMemberData", "Trip",FormMethod.Post))
{
<hr />
@Html.HiddenFor(m=>m.Id)
for(int i=0;i<Model.NumberOfPeople;i++)
{
<p>Member @i Details</p>
@Html.HiddenFor(m => m.people[i].Id)
<p class="text-info">@Html.LabelFor(m=>m.people[i].Name) @Html.EditorFor(m => m.people[i].Name , new {@class="glyphicon-search"})
| @Html.LabelFor(m => m.people[i].InitialDeposite) @Html.EditorFor(m => m.people[i].InitialDeposite , new { @class = "glyphicon-search" })
</p>
}
<hr />
<p><input type="submit" class="btn-success" name="btnMemberInit" value="Save Details" /></p>
}
}
</div>
</div>
Nun, wie soll ich das Formulardaten an die Steuerung senden und es an die DB über EntityFramework speichern ???
public ActionResult FeedMemberData(Trip trip)
{
//TODO
}
hier für Reise, die ich bin immer null ....
No @ Jonathan Eigentlich bin Entsendung i Trip und meine Reiseklasse hat IList. –
BakerStreet221
@ Pratham, sorry, ich könnte nicht mehr Hilfe sein. Haben Sie versucht, ein Tool wie [fiddler] (http://www.telerik.com/fiddler) zu verwenden?Wenn ich eine Controller-Aktion habe, die mir Daten gibt, die falsch sind oder die ich nicht erwartet habe, kann ich dieses kostenlose Tool verwenden, um genau zu diagnostizieren, was an den Server gesendet wird. Beachten Sie auch, dass ich meine Antwort so bearbeitet habe, dass sie das [HttpPost] -Attribut enthält, da ich gerne explizite Daten erhalte, wenn ich Daten von einem Formular erhalte, dessen Controller-Aktion den Formularbeitrag erwartet. –
Dank für Anregungen über Fiddler @jonathan. Ich konnte die richtigen Daten zurück zum Controller schreiben – BakerStreet221