【问题标题】:DropDown List is empty when generating a view from the model从模型生成视图时下拉列表为空
【发布时间】:2019-10-04 13:09:55
【问题描述】:

我在 Car 中有一个枚举属性。

public class Car
{
   public TypeCar TypeCar { get; set; }
}

枚举是

public enum TypeCar
{
   petrol,
   diesel,
   electric   
}

使用 Visual Studio 生成 CRUD 时,我可以在 Index 中看到正确显示的值,但是当我想创建一辆新车时,生成的下拉列表为空。不是应该填写汽油、柴油、电动的价值吗?

<div class="form-group">
    <label asp-for="TypeCar" class="control-label"></label>
    <select asp-for="TypeCar" class="form-control"></select>
    <span asp-validation-for="TypeCar" class="text-danger"></span>
</div>

【问题讨论】:

  • 您需要使用asp-items 属性指定可用的选择选项列表。您的代码仅指定所选选项的模型属性 (asp-for)。

标签: c# asp.net-core tag-helpers


【解决方案1】:

试试这个:

<div class="form-group">
    <label asp-for="TypeCar" class="control-label"></label>
    <select asp-for="TypeCar" asp-items="Html.GetEnumSelectList<TypeCar>()" class="form-control"></select>
    <span asp-validation-for="TypeCar" class="text-danger"></span>
 </div>

编辑: 您应该像 @using TypeCar 一样导入 Enum 类

【讨论】:

  • 是的,试过了,但还是不行。它说找不到类型或命名空间。顶部有@model BaseCompteursApp.Models.Car,我的所有其他字段都没有这个问题。
  • @TropicalViking 如this answer中所暗示,您在select 中缺少绑定asp-items 属性
【解决方案2】:

试试下面的。

在您的 PageModel 的 OnGet() 或 OnGetAsync() 中:

ViewData["CarTypes"] = new SelectList(Enum.GetValues(typeof(TypeCar)).Cast<TypeCar>().Select(s => s.ToString()).ToList());

在你看来:

<div class="form-group">
  <label asp-for="TypeCar" class="control-label"></label>
  <select asp-for="TypeCar" class="form-control" asp-items="ViewBag.CarTypes">
    <option value=""></option>
  </select>
  <span asp-validation-for="TypeCar" class="text-danger"></span>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多