如何从多个元素获取数据

时间:2020-05-23 14:58:59

标签: asp.net asp.net-mvc asp.net-core razor

我有下一个ViewModel:

public class ChatCreationViewModel
    {
        public string ChatName { get; set; }
        public List<User> Friends { get; set; }
        public List<(string, bool)> Partcipants { get; set; }
    }

和下一个视图:

@model GalkaNet.ViewModels.ChatCreationViewModel

    <form method="post" asp-action="NewChat" asp-controller="Chat" enctype="multipart/form-data">
        <h2>Создание беседы</h2>
        <label>Chat name: </label> <input type="text" name="ChatName" placeholder="Name" value=""></p>
        <p><input type="submit" value="Create" /></p>
        @for(int i = 0; i < Model.Friends.Count; i++)
        {
    <div>
        <label>@Model.Friends[i].NickName</label>
        <p> @Html.EditorFor(Model => Model.Partcipants[i].Item2)</p>
    </div>
        }
    </form>
</div>

问题是:我想用用户名和复选框创建元素列表。提交表单后,我想将每个复选框的值与用户ID(此复选框的名称在其前面)组合在一起,放入要进入服务器的我的视图模型的“参与者”列表中。我该怎么办?

1 个答案:

答案 0 :(得分:0)

创建这样的模型

public string ChatName { get; set; }
public List<UserModel > Friends { get; set; }

您的用户模型属性(ID,用户名,已选择) 从您的数据库中填充这些属性

Id = friend.Id;
UserName = friend.Name,
isSelected = false

您的视图

  @for (int i = 0; i < Model.Friends.Count; i++)
  {
   <div class="form-check m-1">
        <input type="hidden" asp-for="@Model.Friend[i].Id " />
        <input type="hidden" asp-for="@Model.Friend[i].Username" />
        <input asp-for="@Model.Friend[i].isSelected" class="form-check- 
       input" />
        <label class="form-check-label" asp- 
        for="@Model.Friend[i].isSelected">
        @Model.Friend[i].Username </label>
  </div>
  }