从控制器方法填充下拉列表

Populating the dropdown from the controller method

我正在尝试在我的索引页面中创建一个下拉列表,并使用 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。但我想检查一下我们是否可以直接调用控制器操作来填充下拉列表

你的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>