Ich habe eine Einheit:Aktualisieren Teileinheit unter Verwendung von Entity Framework (mit rasiermesserAnsicht)
public class Organization
{
public int OrganizationId { get; set; }
[Required]
[StringLength(160)]
public string Name { get; set; }
public DateTime? CreatedOn { get; set; }
public DateTime? ModifiedOn { get; set; }
public virtual ICollection<Team> Teams { get; set; }
public virtual ICollection<ApplicationUser> Persons { get; set; }
}
Ich habe eine OrganizationViewModel
erzeugten Daten zur Darstellung als auch zu sehen, wie die Schaffung neuer Einheiten. Ich kann es später map AutoMapper verwenden, bevor Änderungen an Datenbankspar Entity Framework ...
public class OrganizationViewModel
{
public int OrganizationId { get; set; }
[Required]
[StringLength(160)]
public string Name { get; set; }
public List<ApplicationUser> Persons { get; set; }
}
Ich habe eine Aktion Methode bearbeiten erstellt, die nur Benutzer (für dieses Beispiel zu bearbeiten Eigenschaft Namen erlauben sollten nur, aber in Wirklichkeit, es tut Update viele andere Eigenschaften, die ich habe) für diese Frage abgespeckt ..
Die Edit-Ansicht nur zwei Eigenschaften @Html.HiddenFor(model => model.OrganizationId)
und @Html.EditorFor(model => model.Name)
Jetzt in [HttpPost]
Ich habe OrganizationViewModel
mit aktualisierten Name
Eigenschaft, aber Eigenschaft Persons
bleibt Null, wenn Benutzer bereits in einer Organisation vorhanden sind EF löst einen Fehler aus, wie es vom Kontext nicht erwartet wird.
Ich könnte die Eigenschaften aktualisiert haben, die ich EXPLICITLY in Post-Methode aktualisieren möchte, aber ich möchte nicht alles manuell tun. Gibt es einen anderen Weg, wo ich sagen kann, dass nur die Entitäten aktualisieren, die ich möchte. Ich versuchte mit Bind
's Include
und Exclude
aber es hat null
für Personen als gut.
Help me :)
Das 'Bind'-Attribut dient zum Binden von Daten, die von der Ansicht an den Controller gesendet werden. Wollen Sie, dass 'Personen 'bevölkert sind (bearbeiten Sie sie?) In welchem Fall haben Sie Formularsteuerelemente für jede Eigenschaft von' ApplicationUser 'generiert, und wenn ja, wie? –
ja .. Ich will Personen bevölkert sein, aber ich will sie nicht in 'Edit.cshtml' zeigen –
Aber warum? Wenn Sie für jede Eigenschaft von 'ApplicationUser' keine Formularsteuerelemente einschließen, werden keine Daten vom Client an die POST-Methode gesendet. Wenn Sie sie nicht bearbeiten, würden Sie das sowieso nicht tun. Wenn Sie die Sammlung von 'ApplicationUser' benötigen (nicht klar, warum Sie das brauchen), dann holen Sie sie einfach wieder in der POST-Methode. –