stevenjin 2024-02-28 23:47 采纳率: 98.2%
浏览 2
已结题

ASP.NET CORE MVC有多个下拉列表,怎样传选中的那组到后台

1.用户删除界面,有多个不同级别的用户组,以下拉列列呈现
2.提交删除时,先选择用户组,再选择下拉项指定用户。在选择不同的用户组时,其他用户组进行了隐藏。
3.采用asp-controller方式,通过model传入后台
问题:
传入到后台的,始终是第一组中的用户,要怎样传选中的那组用户呢?

  • 写回答

2条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2024-02-28 23:47
    关注

    stevenjin 晚上好🌙🌙🌙
    本答案参考通义千问

    在 ASP.NET Core MVC 中,如果你有一个包含多个下拉列表的表单,并且每个下拉列表的选择都需要一起传递到后台处理,你可以按照以下步骤来实现:

    1. 创建模型(Model): 首先,你需要创建一个模型类(UserGroupModel),该类包含多个属性对应你的下拉列表。例如:

      public class UserGroupModel
      {
          public int SelectedGroupId1 { get; set; }
          public string SelectedGroupName1 { get; set; }
      
          public int SelectedGroupId2 { get; set; }
          public string SelectedGroupName2 { get; set; } // 添加更多属性,按需扩展
      }
      
    2. 视图(View): 在你的删除用户界面的视图中,使用 Html.DropDownListFor 控制器绑定来绑定下拉列表,同时添加 @Html.HiddenFor 以隐藏每个组的 ID,这样可以在POST请求中一起发送。

      <form asp-action="DeleteUsers">
          <!-- 下拉列表1 -->
          <div>
              <label for="groupId1">用户组1:</label>
              <select id="groupId1" asp-for="SelectedGroupId1">
                  @foreach (var group in Model.AvailableGroups1)
                  {
                      <option value="@group.Id" @(group.Id == Model.SelectedGroupId1 ? "selected" : "")>@group.Name</option>
                  }
              </select>
              <input type="hidden" asp-for="SelectedGroupName1" value="@Model.SelectedGroupName1">
          </div>
      
          <!-- 下拉列表2 -->
          <!-- ...重复类似结构... -->
      
          <!-- 提交按钮 -->
          <button type="submit">删除用户</button>
      </form>
      

      其中 AvailableGroups1 是从服务层获取的用户组数据。

    3. 控制器(Controller): 在 DeleteUsers 方法中,接收 UserGroupModel 类型的参数,然后根据选择的用户组ID执行删除操作。

      [HttpPost]
      public IActionResult DeleteUsers(UserGroupModel userGroupModel)
      {
          // 根据SelectedGroupId1、SelectedGroupId2等属性获取对应的用户组
          var group1 = GetUsersFromGroupId(userGroupModel.SelectedGroupId1);
          var group2 = GetUsersFromGroupId(userGroupModel.SelectedGroupId2);
      
          // 删除选定的用户组中的所有用户
          foreach (var user in group1.Concat(group2))
          {
              // 执行删除逻辑
          }
      
          // 返回结果或重定向
          return RedirectToAction("Index", "Home");
      }
      
      private List<User> GetUsersFromGroupId(int groupId)
      {
          // 从数据库或其他数据源获取用户,根据groupId筛选
      }
      

    通过这种方式,你就可以将多个下拉列表的选择一起发送到后台,并根据这些选择执行相应的操作了。记得在每个下拉列表的asp-for属性中使用不同的索引(如SelectedGroupId1),以区分不同的用户组。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 已采纳回答 2月29日
  • 修改了问题 2月28日
  • 创建了问题 2月28日

悬赏问题

  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致