从可以向数据库提交值的数据库中填充@ Html.DropDownListFor()

时间:2016-07-01 11:10:08

标签: c# asp.net asp.net-mvc html.dropdownlistfor

我正在尝试使用实体框架6开发ASP.net mvc应用程序。 有{2}个实体Driver& DriverType。向数据库添加新驱动程序时,用户应该能够从DropDownList中选择驱动程序类型。 提交表单时,应将所选DriverType的ID添加到DriverTypeID表中的Driver(外键)列。

我的问题是如何在加载页面时将所有DriverTypes提取到DropDownList。如何将所选DriverType的ID传递给Driver表?

我的模型课程如下。

驱动程序类

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

}

我使用数据库优先方法。

1 个答案:

答案 0 :(得分:0)

您可以在操作中创建一个selectList,并将此selectList传递给ViewBag,然后在视图中访问此ViewBag。你应该先行动:

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

现在你应该这样做:

{{1}}

在表单提交并返回发布控制器后执行此操作后,您可以看到用户选择绑定到模型的driverTypeId。

注意:创建selectList时,您的列表中包含要在下拉列表中显示的ID和标题。