【问题标题】:Asp.net Core, set multiple selected values in Razor PageAsp.net Core,在 Razor Page 中设置多个选中的值
【发布时间】:2020-09-26 19:18:00
【问题描述】:

所以,我正在尝试创建一个多选下拉列表,并且我想在其中设置一些默认选择值。
我获取值并将它们存储在一个字符串数组中,其中包含每个字符串中的值。
我尝试将它们设置为 1 个字符串,但它不起作用,尝试将它们设置为字符串数组,然后它效果也不好。

代码如下:

<select name="FacultyList" multiple class="sel form-control" asp-for="Faculties" 
id="uniFaculties" asp-items="@(new SelectList(facultyList,"Name","Name",@selectedFaculties))">
</select> 

facultyList 是我从 api 获得的值列表。
selectedFaculties 是一个包含所选值的字符串数组。

注意:我也在使用 Chosen jQuery 库,如果这有影响的话。

【问题讨论】:

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


    【解决方案1】:

    您可以使用MultiSelectList

    new MultiSelectList(facultyList, "Name", "Name", @selectedFaculties)
    

    我刚刚从您的代码中注意到您在select 上使用了asp-for。这样做时,您传递给SelectListMultiSelectList 的选定值将被忽略。原因是因为它期望选定的值位于您要绑定的 Faculties 属性中。如果您遇到这种情况,这里有一个适合您的示例。

    查看

    <select name="FacultyList" multiple class="sel form-control" asp-for="SelectedFaculties"
        id="uniFaculties" asp-items="@(new MultiSelectList(Model.AvailableFaculties, "Name", "Name"))">
    </select> 
    

    控制器

    public IActionResult Faculty()
    {
        var vm = new FacultyViewModel
        {
            AvailableFaculties = new List<Faculty>
            {
                new Faculty
                {
                    Name = "Arts"
                },
                new Faculty
                {
                    Name = "Science"
                },
                new Faculty
                {
                    Name = "Mathematics"
                }
            },
            SelectedFaculties = new List<string> { "Arts", "Mathematics" }
        };
    
        return View(vm);
    }
    

    这将选择ArtsMathematics。请注意,所选值来自我们将select 绑定到使用asp-for 的同一属性,并且我们不再将所选值直接传递给MultiSelectList

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 2018-07-20
      • 2020-11-18
      • 2015-04-25
      • 1970-01-01
      • 2019-04-10
      • 2022-07-14
      • 2010-10-22
      • 2018-09-12
      相关资源
      最近更新 更多