问题:
需要将项目列表传递到视图中,通过复选框进行选择,并检索选中的项目。但是,手动生成HTML输入会导致未选中的输入无法回传。实现此功能的最佳实践是什么?
答案:
避免手动生成HTML
不建议在这种情况下手动生成HTML。现代MVC框架(如ASP.NET Core)提供强类型HTML辅助方法,用于高效可靠的模型绑定。
创建ViewModel
为了在视图中表示模型数据,创建一个ViewModel类,该类与领域模型非常相似,但包含用于复选框选择的附加属性。例如:
<code class="language-csharp">public class UserViewModel { public int ID { get; set; } public string Name { get; set; } public List<RoleViewModel> Roles { get; set; } } public class RoleViewModel { public int ID { get; set; } public string Name { get; set; } public bool IsSelected { get; set; } }</code>
填充ViewModel
在GET操作方法中,使用领域模型中的数据填充ViewModel,包括根据角色当前是否分配给用户来设置每个角色的IsSelected属性。
在视图中使用HTML辅助方法
在视图中,使用强类型HTML辅助方法来呈现复选框输入。这确保了正确的模型绑定并简化了代码。
<code class="language-html">@Html.HiddenFor(m => m.ID) @Html.DisplayFor(m => m.Name) @foreach (var role in Model.Roles) { @Html.HiddenFor(m => role.ID) @Html.CheckBoxFor(m => role.IsSelected) @Html.LabelFor(m => role.IsSelected, role.Name) }</code>
在POST操作方法中处理选中的角色
在POST操作方法中,ViewModel将自动绑定到请求。然后,您可以遍历Roles集合并检查IsSelected属性以确定选择了哪些角色。
以上是如何在ASP.NET Core View中有效地通过和检索选定的复选框?的详细内容。更多信息请关注PHP中文网其他相关文章!