Hoffe jemand kann mir helfen. Ich bin neu in MVC, komme aus einem winforms/console/vb6background.MVC Modell Kind Objekt null auf HTTP-Post
Entschuldigung, wenn dies bereits beantwortet wurde, bin ich schwer zu verstehen, wie ich das folgende Problem lösen kann.
Ich habe eine Ansicht Modell:
public class testvm
{
public int id { get; set; }
public DateTime date { get; set; }
public student studentID { get; set; }
public testvm() { }
public testvm (student s)
{
studentID = s;
}
}
Ich bin der Student Kind Ziel dieser Ansichtsmodell vorgebevölkern, bevor es zu der Ansicht geführt wird.
Studenten Modell:
public class student
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
}
Das Problem, das ich habe, ist, wenn das Modell auf die HTTP-POST-Methode erstellen zurückgegeben wird der Student Kind-Objekt leer ist.
Der Controller-Code:
// GET: testvms/Create
public ActionResult Create(int sId)
{
student a = db.students.Find(sId);
testvm b = new testvm(a);
return View(b);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "id,date,student")] testvm testvm)
{
if (ModelState.IsValid)
{
db.testvws.Add(testvm);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(testvm);
}
anzeigen Code:
@model WebApplication2.Models.testvm
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>testvm</h4>
<hr />
@Html.HiddenFor(model => model.studentID.ID)
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.date, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.date, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.date, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Das Model-Objekt auf der Ansicht ist, mit dem Schüler Informationen bevölkert. Wenn dies an den Create POST-Controller zurückgegeben wird, ist das Schüler-Child-Objekt null!
Kann jemand bitte beraten, wo ich falsch liege oder den richtigen Weg, dies zu erreichen?
Meine Anwendung wird viele Formen haben, die alle mit Studenteninformationen ausgefüllt werden müssen. Jeder Student wird viele Formulare haben, die für sie ausgefüllt werden müssen.
Vielen Dank im Voraus, Rob