在ASP.net核心中填充下拉列表

Kir*_*irk 7 asp.net asp.net-core-mvc asp.net-core asp.net-core-1.0

有谁知道如何处理Asp.net核心中的Dropdown.我想我理解新的Asp.net核心概念让自己变得非常复杂.(我是Asp.net Core的新手).

我有车型叫Driver,Vehicle.基本上,人们可以在主人中创建一堆车辆,然后将其附加到驾驶员.这样驾驶员就会与车辆相关联.

我的问题是我也在某些区域使用viewmodel来组合两个不同的模型.(从默认模板中了解不多)

我的问题是我不知道下一步是什么,因为ASP.net Core是最新的,没有很多教程和Q/As可用.

司机模型

public class Driver
{
    [Required]
    public int Id { get; set; }

    [Required]
    public string ApplicationUserId { get; set; }

    [Required]
    public int VehicleId { get; set; }

    [Required]
    public string Status { get; set; }


    public virtual ApplicationUser ApplicationUser { get; set; }
    public virtual Vehicle Vehicle { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

车型

public class Vehicle
{

    [Required]
    public int Id { get; set; }

    [Required]
    public string Make { get; set; }
    public string Model { get; set; }

    [Required]
    public string PlateNo { get; set; }
    public string InsuranceNo { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

ViewModel of Driver

    public class DriverViewModel
{
    [Required]
    [Display(Name = "ID")]
    public int ID { get; set; }

    [Required]
    [Display(Name = "User ID")]
    public string ApplicationUserId { get; set; }

    [Required]
    [Display(Name = "Vehicle ID")]
    public IEnumerable<Vehicle> VehicleId { get; set; }
    //public string VehicleId { get; set; }

    [Required]
    [Display(Name = "Status")]
    public string Status { get; set; }


}
Run Code Online (Sandbox Code Playgroud)

这是我的观点

<div class="col-md-10">
   @*<input asp-for="VehicleId" class="form-control" />*@
   @Html.DropDownList("VehicleId", null, htmlAttributes: new { @class = "form-control"})
   <span asp-validation-for="VehicleId" class="text-danger" />
</div>
Run Code Online (Sandbox Code Playgroud)

Bil*_*ill 22

看一下文档,似乎asp.net核心可能正在从HTML帮助程序转向使用标记帮助程序.以下链接应该有所帮助

https://docs.asp.net/en/latest/mvc/views/working-with-forms.html#the-select-tag-helper

特别

@model CountryViewModel

<form asp-controller="Home" asp-action="Index" method="post">
<select asp-for="Country" asp-items="Model.Countries"></select> 
<br /><button type="submit">Register</button>
</form>
Run Code Online (Sandbox Code Playgroud)

注意使用引用Model属性的"asp-for"来绑定和使用"asp-items",它引用了List List选项列表的模型属性源以及它如何应用于select标签

下面引用文档中使用的示例模型以确保完整性

namespace FormsTagHelper.ViewModels
{
public class CountryViewModel
{
    public string Country { get; set; }

    public List<SelectListItem> Countries { get; } = new List<SelectListItem>
    {
        new SelectListItem { Value = "MX", Text = "Mexico" },
        new SelectListItem { Value = "CA", Text = "Canada" },
        new SelectListItem { Value = "US", Text = "USA"  },
    };
}
}
Run Code Online (Sandbox Code Playgroud)

  • 警告所有人!在某些时候,我最终得到了具有自闭合标签的“select”元素,例如“&lt;select asp-for =“Item”asp-items =“Model.Items”/&gt;”而不是“&lt;/ select&gt;”(我想是因为我从允许自动关闭的“Input”进行了转换) - 这导致了大约 30 分钟的完全混乱,因为它根本不起作用,但我没有看到任何警告。 (2认同)