2016-07-01 2 views
0

einreichen kann ich mit Entity Framework 6. Es gibt 2 Einheiten als Driver & DriverType eine ASP.net MVC-Anwendung zu entwickeln, bin versucht. Beim Hinzufügen eines neuen Treibers zur Datenbank sollte Benutzer in der Lage sein, den Treibertyp aus einer DropDownList auszuwählen. Beim Übermitteln des Formulars sollte die ID des ausgewählten DriverType zur Spalte DriverTypeID (Fremdschlüssel) in der Tabelle Driver hinzugefügt werden.ein Bestücken @ Html.DropDownListFor() aus der Datenbank, die Werte in die Datenbank

Meine Frage ist, wie alle DriverTypes in die DropDownList geladen werden, wenn die Seite geladen wird & Wie die ID des ausgewählten DriverType an die Driver Tabelle übergeben?

Meine Modellklassen wie folgt.

Treiberklasse

public partial class Driver 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public Driver() 
    { 
     this.trip_tab = new HashSet<Trip>(); 

    } 

    public string ID { get; set; } 
    public string DriverTypeID { get; set; } 
    public string VehicleID { get; set; } 
    public string Name { get; set; } 
    public string ContactNo { get; set; } 
    public string Comment { get; set; } 

    public virtual DriverType drivertype_tab { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<Trip> trip_tab { get; set; } 
} 

Treiber Typ Klasse

public partial class DriverType 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public DriverType() 
    { 
     this.driver_tab = new HashSet<Driver>(); 
    } 

    public string ID { get; set; } 
    public string Type { get; set; } 
    public string Comment { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<Driver> driver_tab { get; set; } 
} 

}

I Datenbank erster Ansatz bin mit.

+0

Der entsprechende Code muss in der Frage sein. Keine Bilder davon. –

+0

Das sind Paste Bin Links. Keine Bilder. Jedenfalls füge ich der Frage Code hinzu. – JayNaz

+0

Beginnen Sie mit einem Ansichtsmodell, das eine Eigenschaft 'int SelectedDriver' und' IEnumerable DriverList' enthält (und 'DriverList' mit' db.DriverTypes.Select auffüllt (x => new SelectListItem() {Value = x. ID, Text = x.Type}); 'Dann verweisen Sie den Code in [diese Frage/Antwort] (http://stackoverflow.com/questions/34366305/the-viewdata-item-that-has-the-key-xxx -is-of-type-system-int32-aber-muss-sein-o) –

Antwort

0

Sie können eine selectList in Ihrer Aktion erstellen und diese selectList an einen ViewBag übergeben und dann auf diesen ViewBag in Ihrer Ansicht zugreifen. Sie sollten zuerst diese in Ihrer Aktion tun:

var allDriverTypes=_driverTypeService.GetAll(); 
ViewBag.DriverTypes=new SelectList(allDriverTypes,"ID","Title"); 

jetzt in Sicht sollten Sie dies tun:

@Html.DropDownListFor(model => model.DriverTypeID,(SelectList)ViewBag.DriverTypes) 

danach tun, wenn Ihr Formular und kommen zurück Controller schreiben können Sie sehen, driverTypeId dass Benutzer Wählen Sie Bindung an Ihr Modell.

Hinweis: Wenn Sie eine Auswahlliste erstellen, haben Sie eine Liste mit IDs und Titeln, die Sie in Ihrem Dropdown-Menü anzeigen möchten.