c# - Asp.net Core,在 Razor Page 中设置多个选中的值
问题描述
所以,我正在尝试创建一个多选下拉列表,并且我想在其中设置一些默认选择值。
我得到这些值并将它们存储在一个包含每个值的字符串数组中。
我尝试将它们设置为 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 库,如果这有所作为的话。
解决方案
MultiSelectList
您可以为此使用一个:
new MultiSelectList(facultyList, "Name", "Name", @selectedFaculties)
我刚刚从您的代码中注意到您asp-for
在select
. 这样做时,您传递给SelectList
或MultiSelectList
将被忽略的选定值。原因是因为它期望选定的值位于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);
}
这将选择Arts
和Mathematics
。请注意,选择的值来自我们绑定select
到 using的同一属性asp-for
,并且我们不再将选择的值MultiSelectList
直接传递给。
推荐阅读
- python - Keras fit_generator - ImageDataGenerator 行为
- mobx-state-tree - MST:用自己的孩子定义模型
- java - 根据 bean 声明在 JSON 响应中的正确顺序
- c - 如何获取存储在寄存器指向的地址的指令
- dataweave - 在数据编织语言中准确使用括号“()”的位置
- c# - 如何检测对不可见组件的点击
- vue.js - 什么时候在 Vue.js 中使用函数式组件?
- c++ - C++ - 将对象(如字符串)映射到表中的成员函数的正确方法
- javascript - 单击时出现 jQuery 错误 - > Uncaught TypeError: Cannot read property 'top' of undefined
- tomcat - 如何使 Tomcat 在 GET 参数中支持非 RFC7230/ RFC3986 字符?