2016-07-01 21 views
0

に値を提出することができ、データベースから@ Html.DropDownListFor()を移植 はDriver & DriverTypeとして2つのエンティティがあります。新しいドライバをデータベースに追加するとき、ユーザはDropDownListからドライバタイプを選択できるはずです。 フォームを送信するときに、DriverテーブルのDriverTypeID(外部キー)列に、選択したDriverTypeのIDを追加する必要があります。は、私は、エンティティフレームワーク6を使用してASP.net MVCアプリケーションを開発しようとしているデータベース

私の質問は、ページをロードするときにDropDownListにすべてのDriverTypeをフェッチする方法です。& Driverテーブルに、選択したDriverTypeのIDを渡す方法はありますか?

マイモデルのクラスは次のとおりです。

ドライバクラス

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; } 
} 

ドライバタイプクラス

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; } 
} 

}

私は、データベースの最初のアプローチを使用しています。

+0

関連するコードが質問に含まれている必要があります。それのイメージではありません。 –

+0

これは貼り付けのビンのリンクです。画像ではありません。とにかく質問にコードを追加します。 – JayNaz

+0

プロパティ 'int SelectedDriver'と' IEnumerable DriverList'を含むビューモデルを使用して開始し、 'db.DriverTypes.Select(x => new SelectListItem(){Value = x。 ID、Text = x.Type}); '[この質問/回答]のコードを参照してください(http://stackoverflow.com/questions/34366305/the-viewdata-item-that-has-the-key-xxx -is-of-type-system-int32-but-must-be-o) –

答えて

0

アクション内でselectListを作成し、このselectListをViewBagに渡してから、ビュー内でこのViewBagにアクセスできます。あなたが最初にあなたの行動でこれを行う必要があります:あなたがこれを行う必要があるビューで今

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

:あなたのフォームが提出し、戻ってきたときに、コントローラを投稿するこれを行った後

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

をあなたはdriverTypeIdそのユーザーを見ることができますモデルにバインドを選択します。

注:selectListを作成すると、ドロップダウンに表示するIDとタイトルを含むリストが表示されます。

関連する問題