我使用string[] roles = Roles.GetAllRoles()
为我的应用程序获取所有ASP.NET成员身份角色的字符串[]。我将角色发送到ViewData中的视图,并使用foreach使用<%: Html.CheckBox("RoleCheckBox") %>
创建一组复选框。有3个角色,我的视图渲染3个复选框。当我执行查看/源代码时,我会看到复选框及其对应的隐藏标签。它们都有相同的名称,所以有6个名称为“RoleCheckBox”的标签--3个呈现复选框,3个隐藏。ASP.NET MVC 2 - 复选框
问题出在我将表单发回我的控制器并绑定结果时 - 例如public ActionResult Create(Person person, string[] RoleCheckBox)
。我得到了四个字符串,我不知道第四个字符串(“false”)来自哪里。我可以通过尝试各种检查组合来查看哪一个(希望)不会改变并忽略它,但这只是丑陋而已。
有谁知道为什么会发生这种情况?
谢谢,
周杰伦
我不清楚你在说什么 - 你用相同的HTML ID /表单名称生成三个复选框?难道不是只是要求麻烦 - 你不能给他们独特的名字吗?还是你依靠ASP.NET来给他们独特的分层名称? 隐藏的解释:一些旧的浏览器过去只是简单地从已发布的后台数据中省略复选框,所以对于没有打勾的复选框,您将不会返回任何值。 MVC帮助程序生成隐藏,以便在这些情况下总会有一个名为RoleCheckBox的值返回。 – Rup 2010-06-11 13:02:17