2016-04-09 3 views
0

Ich lerne einige Konzepte in asp.net mvc. Ich benutze Entity Framework und Visual Studio 2013 Community Edition. Ich erstelle eine Demo-App zum Lernen. Ich habe ein Modell nach this Link erstellt. Die Modelle sind wie folgt. Unten ist Kursmodell. Der Kurs hat eine Abteilung als Fremdschlüssel. Eine Abteilung kann viele Kurse haben.Wie erhalten dynamisch hinzugefügte Werte von Sicht zu Controller in ASP.NET MVC?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace ManyItemsDemo2.Models 
{ 
    public class Course 
    { 
     public int CourseID { get; set; } 
     public string Title { get; set; } 
     public string Credits { get; set; } 
     public int DepartmentID { get; set; } 

     public virtual Department Department { get; set; } 
    } 
} 

Dies ist Abteilungsmodell. Das Abteilungsmodell ist einfach. Es ist mit Kursmodell verbunden.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace ManyItemsDemo2.Models 
{ 
    public class Department 
    { 
     public Department() 
     { 
      this.Cources = new HashSet<Course>(); 
     } 
     public int DepartmentID { get; set; } 
     public string Name { get; set; } 
     public double Budget { get; set; } 
     public string Administrator { get; set; } 

     public virtual ICollection<Course> Cources { get; set; } 
    } 
} 

Es gibt eine Kontextklasse.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 

namespace ManyItemsDemo2.Models 
{ 
    public class SchoolContext:DbContext 
    { 
     public SchoolContext() : base("SchoolContext") { } 

     public DbSet<Course> Courses { get; set; } 
     public DbSet<Department> Departments { get; set; } 
    } 
} 

Jetzt habe ich scafolding und erstellt Controller und Ansichten mit CRUD-Funktionalität. Ich kann eine Abteilung und Kurse in Ansichten erstellen. Jetzt muss ich mehrere Kurse während der Erstellung von Abteilungen zuweisen. Also habe ich ein solches Ansichtsmodell erstellt. Hier hat eine Abteilung viele Kurse.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using ManyItemsDemo2.Models; 

namespace ManyItemsDemo2.ViewModels 
{ 
    public class DeptCourses 
    { 
     public Department Department { get; set; } 
     public IEnumerable<Course> Course { get; set; } 
    } 

} 

zusammen mit diesem habe ich eine neue Ansicht erstellt. Welche können mehr Ressourcen beim Erstellen der Abteilung akzeptieren. Das Suchergebnis ist so. The View

Die Plus-Taste hat ein Skript, das von meiner früheren Frage ist here. Das Skript verwendet jQuery und klont das Dropdown und fügt zurück.

Das Problem beginnt hier. Wenn ich mehr als ein Dropdown-Element hinzufüge, sagen wir 3, empfange ich null im Controller, obwohl ich drei Elemente erhalte, nur ein Element hat einen Wert, andere sind null. Siehe das Bild für mehr Klarheit.

Image for clarification.

Warum dies geschieht? PS: Ich könnte Echtzeit-Szenarien übersehen, da dies Demo-App zum Lernen und Löschen der Konzepte von einer zu vielen Beziehungen mit Entity-Framework zusammen mit der Verwendung von MVC ist.

+0

Nicht sicher, warum Sie die Antwort in Ihrer vorherigen Frage akzeptiert haben, wenn es nie funktioniert haben könnte. Das Erstellen von Formularsteuerelementen, die überhaupt keine Beziehung zu Ihrem Modell haben. Verweisen Sie auf die Antworten [hier] (http://stackoverflow.com/questions/29161481/post-a-form-array-without-successful/29161796#29161796) und [hier] (http://stackoverflow.com/questions/ 28019793/submit-same-partially-view-called-multiple-mal-data-to-controller/28081308 # 28081308) für einige Optionen –

+0

Aber in Ihnen scheint es, dass Sie nur die 'CouseId' wollen, die mit Ihnen Dropdown-Liste verknüpft ist, in der Wenn Sie Modelleigenschaft anzeigen müssen, muss IEnumerable Courses sein. Aber ein weit besserer Ansatz wäre es, jeden Kurs mit einem zugehörigen Kontrollkästchen anzuzeigen, so dass der Benutzer sie einfach auswählen kann (Ihre aktuelle Implementierung hätte andere Probleme, wie der Benutzer möglicherweise Duplikate auswählt) –

+0

@StephenMuecke Ich habe es im Frontend getestet. Dieses Skript wurde hinzugefügt, so dass es akzeptiert wurde. Ich überprüfe die von Ihnen vorgeschlagenen Links. –

Antwort

0

This arbeitete für mich. Habe einfach den Namen im Skript geändert und ein String-Array in httppost hinzugefügt.

Verwandte Themen