【问题标题】:Getting null value from select list(dropdownList)从选择列表中获取空值(下拉列表)
【发布时间】:2019-08-17 15:06:17
【问题描述】:

试图获取所选项目的 ID。但我从中得到了空值。

这是我创建房间的视图,可以选择房间类型

<select asp-for="RoomType" asp-items="@(new SelectList(@ViewBag.roomType, "Id", "Type"))" class="form-control">
    <option>--Select--</option>
</select>

这是我的模型

public class RoomModel
{
    public int Id { get; set; }
    public string RoomName { get; set; }
    public RoomTypeViewModel RoomType { get; set; }
    public float Price { get; set; }
}
public class RoomTypeViewModel
{
    public int Id { get; set; }
    public string Type { get; set; }
}

控制器

[HttpGet]
public IActionResult CreateRoom()
{
    ViewBag.roomType = _context.RoomType.ToList();
    return View();
}

【问题讨论】:

  • asp-items需要@吗,不是剃须刀代码
  • 实际上我正在尝试将 ViewBag 数据绑定到下拉列表。因为我在这个“视图”@Bosco 中使用了两个模型。
  • 什么时候得到空值?
  • 我不知道这么奇怪的事情。代码现在正在运行。我只是将模型 RoomTypeViewModel 更改为 int 。然后它起作用了。但是,当我再次将类型从 int 更改为“RoomTypeViewModel”时,它正在工作。

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


【解决方案1】:

你应该有一个你想像这样放在下拉列表中的项目。

Controller.cs

public class RoomController : Controller
{
     private readyonly RoomTypeContext _contextRoomType;
}

public RoomController(RoomTypeContext contextRoomType)
{
     _contextRoomType = contextRoomType;
}

public IActionResult Create()
{
     List<RoomType> roomTypes = new List<RoomType>();
     roomTypes = (from room in _contextRoomType.roomTypes select room).ToList();
     roomTypes.Insert(0, new RoomType { });
     ViewBag.ListOfRoomTypes = roomTypes;
}

View.cshtml

<select asp-for="RoomType" 
        class="form-control form-control-sm" 
        asp-items="@(new SelectList(@ViewBag.ListOfRoomTypes , "Id","Type"))">
</select>

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 2017-05-14
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多