gpt4 book ai didi

c# - 模型列表的 Razor 复选框

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:09 25 4
gpt4 key购买 nike

用户模型

public class UserModel
{
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Location { get; set; }
public IEnumerable<UserPets> UserPets { get; set; }
}

用户宠物模型

public class UserPetsModel
{
public PetModel Pet{ get; set; }
public bool UserHasPet { get; set; }
}

我使用这 2 个模型创建了一个编辑页面,用户可以在其中编辑他们拥有的宠物。

为了让他们能够说明他们拥有哪些宠物,我正在尝试使用复选框。

编辑页面

@model Models.UserModel

@using (Html.BeginForm())
{
<div class="form-group">
@Html.LabelFor(model => model.FirstName)
@Model.FirstName
</div>

@foreach (var userPets in Model.UserPets)
{
@Model.Pet.AnimalName
<div>
@Html.CheckBoxFor(u => userPets .UserHasPet)
</div>
}

<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
}

我遇到的问题是在尝试将 UserModel 映射回 Controller 操作时。当我按下保存按钮时,UserModel 上的所有内容都被映射回 Controller ,但 UserPetsModels 除外,我认为这是由于使用了 foreach。

是否有另一种方法可以在不使用 foreach 或 for 循环的情况下为每个 UserPetModel 显示一个复选框。

最佳答案

是的。您应该创建 EditorTemplate为你的UserPetsModel .它看起来像:

 @model UserPetsModel

@Model.Pet.AnimalName
<div>
@Html.CheckBoxFor(model => model.UserHasPet)
</div>

然后你可以简单地做:

@Html.EditorFor(model => model.UserPets)

EditorFor将为您创建正确的绑定(bind)。请注意,您应该仅为 UserPets 创建 EditorTemplate它也适用于 List<UserPetsModel>IEnumarable<UserPetsModel>使用与我展示的相同的语法。

关于c# - 模型列表的 Razor 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896989/

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