【问题标题】:Populating the dropdown from the controller method从控制器方法填充下拉列表
【发布时间】:2021-12-24 12:39:45
【问题描述】:

我正在尝试在我的索引页面中创建一个下拉列表,并使用 Controller 方法中的值填充它。我在控制器中创建了一个方法,获取需要在 index() 页面中添加的下拉列表的值

    private SortedSet<string> getRooms(DbSet<RmRoom> rmRooms)
    {
        var roomNameSet = new SortedSet<string>();
        foreach (var item in rmRooms)
        {
            roomNameSet.Add(item.Name);
        }
        return roomNameSet;
    }

现在在索引页面上我不知道如何调用这个方法来填充下拉列表

    <select id="dropdownRoom">
        <option value="0">Select Room</option>
       //here how to call the controller method    
    </select>

大多数论坛都在讨论使用 ViewData/ViewBag。但是我想检查我们是否可以直接调用控制器操作来填充下拉列表

【问题讨论】:

    标签: c# asp.net razor asp.net-core-mvc


    【解决方案1】:

    你的getRooms是私有方法,所以view不能直接调用它,除非你改成public方法,但是在Index action中使用ViewData/ViewBag传数据给view比较安全,这样其他人也会无法直接调用 getRooms。

    这是一个带有 ViewData 的演示:

    public IActionResult Index()
            {
                ...
                ViewData["RoomList"]=getRooms(rmRooms);
                return View();
            }
    

    查看:

    <select id="dropdownRoom">
        <option value="0">Select Room</option>
        @foreach (var item in ViewData["RoomList"] as IEnumerable<string>)
        {
            <option value=@item>@item</option>
        }
    </select>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多