2011-10-20 44 views
1

在我的分機JS3的應用程序,我創建與下面的代碼複選框形式:爲什麼Asp.Net抱怨Ext JS3沒有通過一個bool來動作複選框沒有被選中?

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

當我檢查它正確地發送isAutomationFailure: true我Asp.NET MVC行動的複選框,生活是美好的。但是,如果我離開的複選框選中,它提供了:

參數字典包含參數爲非可空類型「System.Boolean」的「isAutomationFailure」的方法無效項

我明白如果未勾選複選框,該複選框不會發送任何內容,但我的印象是,如果未指定,則非指定的bool將默認爲false。我的動作有以下特徵:

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

我怎樣才能得到這個工作(而不必訴諸轉動參數爲空類型)?

+0

Mvc通過總是呈現一個隱藏的字段,並將相同的名稱和值設置爲false來解決這個問題。這樣他們通過查看它們是真假還是假假來解析bools – meandmycode

回答

1

更改boolbool?和治療nullfalse。這是Ext JS的一個「特色」。

isAutomationFailure = isAutomationFailure ?? false; 
+0

將此標記爲答案,因爲除了使用可爲null的布爾值之外,似乎沒有其他方法可以解決此問題。 – KallDrexx

0

我建議不要在複選框上使用inputValue屬性。這解釋瞭如何通過表單提交價值:http://www.w3schools.com/jsref/prop_checkbox_value.asp

相反,您應該使用'checked'屬性;

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

我不明白爲什麼這會有所幫助?首先,我不得不使用'inputValue',因爲如果我沒有表單發佈'isAutomationFailure:on',這會導致我的C#布爾值爲false。另外,從Ext JS 3 API文檔來看,'checked'隻影響複選框的初始階段(我不關心它,因爲我在表單加載時立即從我的網站加載它) – KallDrexx

+0

你說得對。顯然,可空布爾值是要走的路。 –

相關問題