在视图中使用复选框并在模型中获取其值

Posted

技术标签:

【中文标题】在视图中使用复选框并在模型中获取其值【英文标题】:Use check box in view and get its value in model 【发布时间】:2010-08-20 12:52:17 【问题描述】:

我可以在 View 中这样使用它吗?

<%= html.CheckBoxFor(user => user.Role, "Administrator")%>

如果选中复选框,则只需读取模型中的属性值:

string role = user.Role;
(role = "Administrator")

【问题讨论】:

【参考方案1】:

在你的模型中...

public class UserEditModel  
  public string UserName  get; set; 
  public string[] Role  get; set; 

在你看来……

<%: Html.TextBoxFor(x = x.UserName)<br />
<input type="checkbox" name="role" id="role_Administrator" value="Administrator" />
<input type="checkbox" name="role" id="role_Create_Project" value="Create Project" />
<!-- etc -->

是的,您需要为此场景编写原始 HTML。这将与 MVC 默认值正确绑定。默认的 CheckBoxFox 确实只适用于 True/False 绑定。类似的东西

<%: Html.CheckBoxFor(x => x.AcceptLicenseTerms) %>

<%: Html.CheckBoxFor(x => x.RememberMe) %>

【讨论】:

对不起,我有点困惑我都在这里做什么。谢谢介绍:)! 我认为这个特定场景(您的代码)更适合单选按钮组类型的选择。 我想制作能够添加新角色的下拉列表,那我需要使用复选框,我认为它更有意义还是??【参考方案2】:

复选框被读取为“真”或“假”,即它们是布尔类型。您可以做的是拥有一个带有 IsAdmin 属性的视图模型,然后在该属性为 true 时签入您的控制器。

// View
<%: Html.CheckBoxFor(model => model.IsAdmin)

// Controller
If(viewModel.IsAdmin)

    doYourStuff();

【讨论】:

以上是关于在视图中使用复选框并在模型中获取其值的主要内容,如果未能解决你的问题,请参考以下文章

视觉上禁用复选框,但允许它仍然提交其值

Android 使用按钮和对话框复选框的多选项目,并在列表视图中显示所选项目而不是按钮

MVC 3 从视图、模型中检索复选框值

JS如何获取表单中复选框的值?

单击按钮时如何在android中获取带有ListView值的复选框,EditText?

在 PHP 中显示数据库中的复选框值