C# 为什么Asp.Net抱怨ExtJS3没有在复选框未选中时向操作传递bool?

C# 为什么Asp.Net抱怨ExtJS3没有在复选框未选中时向操作传递bool?,c#,asp.net-mvc,extjs,C#,Asp.net Mvc,Extjs,在Ext Js3应用程序中,我创建了一个带有复选框的表单,其代码如下: }, { xtype: 'checkbox', fieldLabel: 'Is Automation Failure', inputValue: 'true', name: 'isAutomationFailure' }, { 当我选中该复选框时,它会正确地将isAutomationFailure:true发送到我的Asp.NET MVC操作,

在Ext Js3应用程序中,我创建了一个带有复选框的表单,其代码如下:

    }, {
        xtype: 'checkbox',
        fieldLabel: 'Is Automation Failure',
        inputValue: 'true',
        name: 'isAutomationFailure'
    }, {
当我选中该复选框时,它会正确地将
isAutomationFailure:true
发送到我的Asp.NET MVC操作,生活很美好。但是,如果我不选中该复选框,它会给出:

参数字典包含方法的非null类型“System.Boolean”的参数“isAutomationFailure”的null条目

我知道如果没有选中复选框,复选框不会发送任何内容,但我的印象是,如果没有指定,未指定的bool将默认为false。我的行动有以下签名:

    public virtual JsonResult SetTestRunFailureInfo(int runId, bool isAutomationFailure, int? tfsWorkitemId)

我如何才能让它工作(而不必求助于将参数转换为可为null的类型)?

我建议不要在复选框上使用inputValue属性。这说明了如何在表单提交上传递值:

相反,您应该使用“checked”属性

 }, {
    xtype: 'checkbox',
    fieldLabel: 'Is Automation Failure',
    checked: true,
    name: 'isAutomationFailure'
}, {

我建议不要对复选框使用inputValue属性。这说明了如何在表单提交上传递值:

相反,您应该使用“checked”属性

 }, {
    xtype: 'checkbox',
    fieldLabel: 'Is Automation Failure',
    checked: true,
    name: 'isAutomationFailure'
}, {

bool
更改为
bool?
并将
null
视为
false
。这是ExtJS的一个“特性”

isAutomationFailure = isAutomationFailure ?? false;

bool
更改为
bool?
并将
null
视为
false
。这是ExtJS的一个“特性”

isAutomationFailure = isAutomationFailure ?? false;

我不明白为什么那样会有帮助?首先,我必须使用
inputValue
,因为如果我不这样做,表单将发布
isAutomationFailure:on
,这将导致我的C#boolean为false。另外,从Ext JS 3 API文档判断,
选中的
只会影响复选框的初始阶段(我不在乎,因为我在表单加载时会立即从我的网站加载它),你是对的。很明显,可以为空的布尔值是一个不错的选择。我不明白为什么这会有帮助?首先,我必须使用
inputValue
,因为如果我不这样做,表单将发布
isAutomationFailure:on
,这将导致我的C#boolean为false。另外,从Ext JS 3 API文档判断,
选中的
只会影响复选框的初始阶段(我不在乎,因为我在表单加载时会立即从我的网站加载它),你是对的。显然,可以为空的布尔值是解决这个问题的方法。Mvc通过始终呈现一个隐藏字段,该字段的名称和值都设置为false。通过这种方式,他们通过查看布尔值是真是假来解析布尔值,MVC通过始终呈现一个具有相同名称和设置为假的值的隐藏字段来解决这个问题。通过这种方式,他们分析布尔值,看它们是真是假还是假,将其标记为答案,因为除了使用可为空的布尔值,似乎没有其他方法来处理它。将其标记为答案,因为除了使用可为空的布尔值,似乎没有其他方法来处理它。