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下,但这正是我测试过的并且问题没有在测试过程中存在
有什么想法吗?
好吧,我发现了这个问题,并想将其发布在这里以防其他人遇到它。某些表单填充程序将使用我使用过的名称来检测字段,并尝试通过将值设置为用户之前用于类似命名字段的任何值来自动“填充它们”。从昨晚深夜开始,我还收到“UNSUBSCRIBED”和“SUBSCRIBED”作为名为“OptIn”的复选框的值。
因此,表单填写者将复选框的值更改为某些值,并且用户选中该框,从而导致将意外值传输到服务器。
任何有关处理此问题的想法将不胜感激。
| 归档时间: |
|
| 查看次数: |
4447 次 |
| 最近记录: |