asp.net mvc复选框不一致

Chr*_*ris 5 checkbox asp.net-mvc

我正在使用ASP.NET MVC表单上的复选框,如下所示:

<%=Html.CheckBox("AgreeToRules", Model.AgreeToRules)%>
Run Code Online (Sandbox Code Playgroud)

模型上的AgreeToRules属性是一个布尔值.在测试期间,这一切都很好.但是,现在我们已经开始使用这个应用程序了,我发现以下消息传递中出现了相对较小但很多的错误:

System.Web.HttpUnhandledException:抛出了类型'System.Web.HttpUnhandledException'的异常.---> System.InvalidOperationException:从类型'System.String'到类型'System.Boolean'的参数转换失败.有关更多信息,请参阅内部异常.---> System.FormatException:Y不是Boolean的有效值.---> System.FormatException:String未被识别为有效的布尔值.

这似乎发生在视图引擎尝试在帖子后呈现表单时,并且从ValueProvider返回的复选框的值如下所示:

Y,假

要么

N,假

以原始形式呈现的html如下所示:

<input id="AgreeToRules" name="AgreeToRules" type="checkbox" value="true" />
<input name="AgreeToRules" type="hidden" value="false" />
Run Code Online (Sandbox Code Playgroud)

在测试期间,我期望(并显示)发布的值看起来像:

真假

如果选中或

如果没有检查.那么N和Y来自哪里?

我将用户代理添加到从错误处理程序返回的信息列表中,并且出现(到目前为止)所有错误都发生在带有FF 3.0.10的Windows XP下,但这正是我测试过的并且问题没有在测试过程中存在

有什么想法吗?

Chr*_*ris 0

好吧,我发现了这个问题,并想将其发布在这里以防其他人遇到它。某些表单填充程序将使用我使用过的名称来检测字段,并尝试通过将值设置为用户之前用于类似命名字段的任何值来自动“填充它们”。从昨晚深夜开始,我还收到“UNSUBSCRIBED”和“SUBSCRIBED”作为名为“OptIn”的复选框的值。

因此,表单填写者将复选框的值更改为某些值,并且用户选中该框,从而导致将意外值传输到服务器。

任何有关处理此问题的想法将不胜感激。