Ich habe versucht, dies für mehr als einen Tag jetzt herauszufinden, aber ich kann es einfach nicht funktionieren. Ich habe eine asp.net MVC-Website, die das Entityframework für sein Datamodel verwendet. Ich brauche eine komplexe Release
Entität bearbeiten zu können, die eine enthält List<ReleaseDescription>
ASP.net mvc EntityCollection ist null beim Speichern
Ich habe folgendes Modell (Apparantly kann ich keine Bilder hochladen, damit ich es nur aus geben werde):
public class Release
{
public string Version
..some other primitive properties
public EntityCollection<ReleaseDescription>
}
public class ReleaseDescription
{
public string Description
public Language Language
}
public class Language
{
public string ISOCode
public string Description
}
Bei der Suche für eine Lösung für dieses Problem im Web. Ich fand heraus, dass eine EntityCollection (siehe Liste Release.ReleaseDescription
) ist keine gute Idee, so in der Teilklasse Release
ich eine zusätzliche Eigenschaft ReleaseDescriptionList
gemacht, die diese EntityCollection in ein List<ReleaseDescription>
durch den Getter verwandelt, es keine Setter hat.
Das Problem ist, dass beim Speichern, meine release.ReleaseDescription
oder sogar die release.ReleaseDescriptionList
immer leer ist, wenn Elemente darin sein sollten.
folgt hier den Rest meines Code:
Mein Edit.aspx Code
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Server.DM.Release>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Edit</h2>
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
... (Code for the primitive properties (works all fine)
<fieldset>
<legend>Descriptions</legend>
<% for(var i =0; i<Model.ListReleaseDescriptions.Count; i++)
{%>
<%: Html.EditorFor(x => Model.ListReleaseDescriptions[i], "ReleaseDescriptionRow")%>
<%} %>
<%= Html.ActionLink("Add another...", "AddDescription", Model) %>
</fieldset>
<p>
<input type="submit" value="Save" />
</p>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
der ASP-Code in der DescriptionRelease sieht wie folgt wie folgt aussieht:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Server.DM.ReleaseDescription>" %>Language: <%= Html.TextBoxFor(x => x.Language.ISOCode) %>Qty: <%=Html.TextBoxFor(x => x.Description)%>
(I konnte nicht über Codeblock in mehreren Zeilen Sorry)
Wenn ich auf die Schaltfläche Speichern klicken im Bearbeitungsbildschirm und ich zu meiner Action
[HttpPost]
public ActionResult Edit(Release release)
release.DescriptionRelease
keine Daten enthält, wenn drei Elemente in ihm sein sollten. Bei der Lösung dieses Problems ist jede Hilfe hilfreich!
(ps: Ja. Ich weiß, es gibt ähnliche Themen in diesem Forum und andere, aber nichts davon scheint für mich zu arbeiten)