MV3 CheckBox的重复查询字符串值(对于布尔值,为true,false)


问题内容

我创建了一个带有复选框的简单页面:

@using (Html.BeginForm("MyController", "MyAction", FormMethod.Get))
{
  @Html.CheckBoxFor(x => x.MyCheckBox)
  <input type="submit" value="Go!" />      
}

该URL两次用MyCheckBox值填充!因此:

MyAction?MyCheckBox=true&MyCheckBox=false

如果复选框为true,则仅重复该值。如果设置为false,它将仅在查询字符串中出现一次。

上面的代码得到了简化,因为我在窗体上有几个下拉菜单和一个文本框,它们可以正常工作。我认为我从这个问题中遗漏的代码没有什么异常之处。

是否有人在查询字符串参数重复方面有类似的问题?


问题答案:

此行为是设计使然的复选框控件。如果未选中,则标准HTML复选框控件不会传递任何值。这是不直观的。而是,ASP.Net复选框控件具有2个元素,即可见的标准控件和值为’False’的隐藏控件。

因此,如果未选中该复选框,则将传递一个值:False
如果选中,将有两个值TrueFalse。因此,您需要使用以下代码来检查代码中的有效性:

bool checkboxChecked = Request.QueryString["MyCheckBox"].Contains("True");