为什么 Asp.Net 抱怨在未选中复选框时 Ext JS3 没有将 bool 传递给操作?
在我的 Ext Js3 应用程序中,我创建了一个带有复选框的表单,其中包含以下代码:
}, {
xtype: 'checkbox',
fieldLabel: 'Is Automation Failure',
inputValue: 'true',
name: 'isAutomationFailure'
}, {
当我选中该复选框时,它会正确地将 isAutomationFailure: true
发送到我的 Asp.NET MVC 操作,一切顺利。但是,如果我不选中该复选框,则会给出:
参数字典包含方法的不可空类型“System.Boolean”的参数“isAutomationFailure”的空条目
我知道如果未选中复选框,复选框不会发送任何内容,但我的印象是非-specified bool 如果没有指定则默认为 false。我的操作具有以下签名:
public virtual JsonResult SetTestRunFailureInfo(int runId, bool isAutomationFailure, int? tfsWorkitemId)
如何使其正常工作(无需将参数转换为可为空类型)?
In my Ext Js3 application I created a form with a checkbox with the following code:
}, {
xtype: 'checkbox',
fieldLabel: 'Is Automation Failure',
inputValue: 'true',
name: 'isAutomationFailure'
}, {
When I check the checkbox it correctly sends isAutomationFailure: true
to my Asp.NET MVC action, and life is good. However, if I leave the checkbox unchecked, it gives:
The parameters dictionary contains a null entry for parameter 'isAutomationFailure' of non-nullable type 'System.Boolean' for method
I understand that checkboxes do not send anything over if a checkbox isn't checked, but I was under the impression that a non-specified bool would default to false if not specified. My action has the following signature:
public virtual JsonResult SetTestRunFailureInfo(int runId, bool isAutomationFailure, int? tfsWorkitemId)
How can I get this to work (without having to resort to turning the parameter into a nullable type)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将
bool
更改为bool?
并将null
视为false
。这是 Ext JS 的一个“功能”。Change your
bool
tobool?
and treatnull
asfalse
. That's a "feature" of Ext JS.我建议不要在复选框上使用 inputValue 属性。这解释了如何在表单提交上传递该值: http://www.w3schools.com/ jsref/prop_checkbox_value.asp
相反,您应该使用 'checked' 属性;
I would suggest not using the inputValue property on a checkbox. This explains how the value would be passed on a form submit: http://www.w3schools.com/jsref/prop_checkbox_value.asp
Instead you should use the 'checked' property;