【问题标题】:Html.CheckBox returning value not true/falseHtml.CheckBox 返回值不是真/假
【发布时间】:2013-05-29 15:53:25
【问题描述】:

这看起来很荒谬,但你只能从 MVC 复选框返回真/假吗?我记得那天(在经典的 asp 中)从勾选的复选框返回一个值是完全有效的,但微软似乎决定复选框应该只包含真/假值。

所以如果你添加以下内容:

@Html.CheckBox("PropertyTypes", true, new {@value="A"})

我希望我的表单 POST 包含Property=A,我最终得到的是Property=A&Property=true,这会破坏模型,所以我在属性中得到一个null,而不是我想要的字符串。

经过调查,事实证明这是因为 microsoft 添加了一个额外的输入,所以 如果我不想检查输入,我会得到一个错误......非常感谢...... ..:/

<input id="PropertyTypes" type="checkbox" value="Hotel" name="PropertyTypes" data-val-youmustselectatleastone="You must select at least one Property Type" data-val="true" checked="checked">
<input type="hidden" value="false" name="PropertyTypes">

为什么!

我可以只使用纯 HTML 自己在输入中编写代码,但随后我就失去了所有不显眼的验证。

关于如何绕过这种愚蠢的任何想法?

Ps 复选框的数量是动态的,因此为每个值添加一个属性不会减少它。

【问题讨论】:

  • @KristianHellang 如何从复选框返回值?不是真的还是假的?
  • 复选框被选中/未选中,例如真假。确定不想要下拉菜单? ;)
  • 你必须创建一个 HTML 扩展来添加我认为的验证属性。
  • @KristianHellang 不,这是一个 UI 问题。我想要用户可以勾选的 x 个复选框,然后决定他们正在搜索的选项。所以我想要酒店和/或别墅和/或公寓等。
  • 以下是源代码中的注释:“为复选框渲染一个额外的 。这解决了未在请求中发送未选中复选框的情况。发送一个隐藏的输入使得在提交请求时可以知道该复选框存在于页面上。"

标签: c# asp.net-mvc-3 checkbox


【解决方案1】:

这看起来很荒谬,但你只能从 MVC 复选框返回真/假吗?

我不觉得这很荒谬。当您重新考虑使用布尔变量对选中/未选中状态进行建模时,实际上是有意义的。

为什么!

因为这就是框架的设计者决定实现 CheckBox 帮助器的方式。

关于如何绕过这种愚蠢的任何想法?

当然是使用视图模型:

public class MyViewModel
{
    public int Id { get; set; }
    public bool IsChecked { get; set; }
}

然后假设您有一个集合,您将使用复选框和隐藏字段来存储项目的相应 id:

@Html.HiddenFor(x => x.SomeCollection[i].Id)
@Html.CheckBoxFor(x => x.SomeCollection[i].IsChecked)

提交表单后,您将获得包含项目 ID 以及它们是否被选中的集合属性。

【讨论】:

  • 所以这违反了 W3C 标准...w3.org/TR/html401/interact/forms.html 表单中的多个复选框可能共享相同的控件名称。因此,例如,复选框允许用户为同一属性选择多个值。 INPUT 元素用于创建复选框控件。
  • 不,这不会违反任何 W3C 标准。随意通过 W3C 验证器传递您生成的标记,您会很高兴:-)
  • 嗯,谢谢你的回答......出于某种原因,我真的很生气......我可能会给 MS 写一封愤怒的信......这会教他们! :)
  • 继续吧。你也可以在你的信中说欢迎我,并告诉他们在下一个版本中删除 ViewData/ViewBag :-)
  • 非常感谢,在找到这一页之前,我阅读了大约 10 个不同的页面。你解释得这么简单。现在我可以去做一些真正的工作了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多