gpt4 book ai didi

c# - 将多选列表发布到对象列表 asp.net core 2

转载 作者:行者123 更新时间:2023-12-01 11:15:30 24 4
gpt4 key购买 nike

我有两个类(class)叫 UserRole .

class User
{
...
public List<Role> Roles;
}

class Role
{
...
public int ID;
public string Name;
}
我也有一个 Action (提交)
public IActionResult Submit(User user)
{
...
}
在我的 Index.cshtml select
<select multiple="multiple" class="multi-select" id="my_multi_select1" asp-for="Roles" asp-items="ViewBag.Roles"></select> 
ViewBag.Roles值(value)是
ViewBag.Roles= new SelectList(Role.SelectAll(), "Name", "Name");
问题是当我发布表单时,数据是这样发送的 ...&Roles=role1,role2&...等等 user.Roles当我想创建两个具有名称的角色时变为空 role1role2并将它们分配给 user.Roles (实际上,我希望 Asp 做到这一点)

最佳答案

Select Tag Helper asp-for 指定 select 元素的模型属性名称, asp-items 指定选项元素( SelectListItem 的集合),而不是对象集合。
1.添加一个带有列表的 ViewModel 作为下拉项的属性。

public class UserViewModel
{
public int Id { get; set; }
public string Name { get; set; }

public List<int> Roles { get; set; }
}
2.In.cshtml文件选择如下
@model PostMultiSelect.Models.UserViewModel
<select multiple="multiple" class="multi-select" id="my_multi_select1" asp-for="@Model.Roles" asp-items="(List<SelectListItem>)ViewBag.Roles"></select>
3.ViewBag.Roles的值如下,获取RoleId的Roles
ViewBag.Roles = _context.Roles.Select(r=>new SelectListItem {Value=r.ID.ToString(),Text=r.Name}).ToList();
如果您想获得带有名称的角色,您可以将“Value=r.ID.ToString()”更改为“Value=r.Name”

关于c# - 将多选列表发布到对象列表 asp.net core 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51973284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com