2016-04-08 7 views
1

Ich wurde gebeten, ein CRM-System für einen Sportclub zu aktualisieren, der mit MVC Entity Framework erstellt wurde. Das System funktioniert im Moment, indem es den Mitarbeitern des Clubs ermöglicht, ein Hauptkonto zu erstellen, zu dem Sie Kinder und Notizen hinzufügen können. Dies sind die KernklassenErstellen einer komplexen Entität mit 1: n-Beziehung und einer Ansicht

Konto Klasse

public class Account 
    { 
     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Telephone { get; set; } 
     public string Address1 { get; set; } 
     public string Address2 { get; set; } 
     public string TownCity { get; set; } 
     public string RegionCounty { get; set; } 
     public string PostCode { get; set; } 
     public string Email { get; set; } 
     public virtual ICollection<Child> Children { get; set; } 
     public virtual ICollection<SecondaryContact> SecondaryContacts { get; set; } 
     public virtual ICollection<Note> Notes { get; set; } 
     public virtual ICollection<JobTask> JobTasks { get; set; } 
    } 

Kinder Klasse

public class Child 
    { 
     public int Id { get; set; } 
     public int AccountId { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public DateTime DateOfBirth { get; set; } 
     public string SchoolName { get; set; } 
     public string MedicalConditions { get; set; } 
     public int SchoolYear { get; set; } 
     public MembershipTypes MembershipType { get; set; } 
     public AccountStatusTypes AccountStatus { get; set; } 
     public virtual ICollection<Session> AttendedSessions { get; set; } 
     public virtual Account Account { get; set; } 
    } 

Im Moment Benutzer im Unternehmen Büro ein Konto erstellen, dann fügen Sie Kinder auf das Konto ; Ein Konto einzurichten ist eine Voraussetzung für die Erstellung eines Kindes.

Das Management des Unternehmens möchte ein neues, kundenorientiertes Frontend für seine Website einführen, auf dem sich Kunden registrieren und ihre Kinder für den Sportclub bezahlen können. Sie haben mir aber auch einen neuen Prozess "Flow" präsentiert, in dem alle Informationen auf einer Seite gesammelt werden müssen. Wenn Sie also die Kunden bitten, ein Konto zu erstellen und sie dann zu bitten, ihre Kinder einzeln hinzuzufügen (genau wie die Büromitarbeiter in ihrem Admin-Panel), kommt das nicht in Frage.

Ich nehme an, die Kernfrage ist, ist es möglich, eine einzelne Ansicht zu erstellen, die diese beiden Entitäten bevölkern würde, oder kann ich die Liste der untergeordneten Elemente in dem Konto aus einer Ansicht hinzufügen? Bedenkt man, dass ein Konto möglicherweise mehrere Kinder hat? Ich habe über SO nach ähnlichen Situationen geschaut, aber es scheint, dass alles, was dem entspricht, was ich suche, Daten hinzufügt, die bereits vordefiniert sind.

Alle Vorschläge würden sehr geschätzt werden.

Antwort

2

Sie könnten das Account als ViewModel verwenden und die Children -Eigenschaft verwenden, um die erstellten untergeordneten Elemente einzureichen - entweder durch "Vorfüllen" der Auflistung mit leeren untergeordneten Elementen oder durch Anbieten einer Art "add" -Funktion (die das Objekt erneut lädt Seite mit demselben Konto, aber ein zusätzliches leeres Kind in der Sammlung).

In der Ansicht, die Sie Eingabeelemente für die Kinder durch die Verwendung einer for Schleife hinzufügen können - foreach nicht funktioniert, wie das Modell-Bindemittel, um die Index-Variable neu zu erstellen, die Sammlung auf Post-back benötigt:

@for (int i = 0; i < Model.Children.Count; ++i) 
{ 
    @Html.TextBoxFor(m => m.Children[i].FirstName) 
    @* ...and so on... *@ 
} 

Ich benutze ein solches Konstrukt in meiner Anwendung und es funktioniert gut.

+0

Perfekt, danke. Ich musste die ICollection zu einer Liste ändern, aber dies scheint den Trick zu tun. Ich hatte ursprünglich gedacht, dass ich an die Notwendigkeit gebunden wäre, zuerst das Konto zu erstellen, aber das ist eine gute Lösung. Danke für deine Hilfe und deinen Rat! –

Verwandte Themen