具有List属性的模型中的ASP.NET MVC CheckBoxList

 lao6345790 发布于 2023-02-09 10:36

如果标题不清楚,请道歉.

我正在尝试从ASP.NET MVC中的表单提交返回我的模型.

我的问题几乎和这个问题一样,只是因为我没有List一个像以下那样的模型:

public Model
{
     string UserName {get; set;}
     string Password {get; set;}
     List UserRoles {get; set;}
}

我需要UserRoles作为管理员在创建新用户时可以选择的复选框.我的问题是,我不确定如何对列表使用'@ Html.CheckBoxFor'.我试过这个:

 @for (var i = 0; i < Model.UserRoles.Count();i++ )
 {
   @Html.HiddenFor(model => model.UserRoles[i].RoleID)
   @Html.CheckBoxFor(model => model.UserRoles[i].Selected)
   @Html.LabelFor(model => model.UserRoles[i].Name)
 }

这绝不起作用 - 页面上的每个标签都是"名称",我的列表在POST中是空的.有人可以给我任何指导吗?

2 个回答
  • 请参阅下面的代码,这样您就不需要隐藏角色ID,当您为用户保存所选角色时,也无需遍历所有角色以查看选择了哪个角色.

    视图

    @foreach (Roles info in Model.UserRoles)
    {
        <span>
            <input type="checkbox" class="checkbox" name="selectedRoles" value="@info.RoleName" id="@infoRoleName" />
            <label for="@info.RoleName">@info.RoleName</label>
        </span>
    }
    

    行动

    [HttpPost]
    public ActionResult CreateUsers(Model model, string[] selectedRoles)
    {
           //
    }
    

    2023-02-09 10:37 回答
  • 根本不需要离开Razor.

    这对我有用:

    for (var i = 0; i < Model.UserRoles.Count(); i++)
    {
        var role = Model.UserRoles[i];
        @Html.HiddenFor(model => model.UserRoles[i].RoleId)
        @Html.CheckBoxFor(model => model.UserRoles[i].Selected)
        @Html.LabelFor(model=> model.UserRoles[i].Name, role.Name)
    }
    

    2023-02-09 10:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有