我使用的複選框的ASP.NET MVC形式就像這樣:asp.net的MVC複選框不一致
<%=Html.CheckBox("AgreeToRules", Model.AgreeToRules)%>
模型上的AgreeToRules屬性是一個布爾值。在測試過程中,這一切都運行良好。然而,現在我們已經活了這個程序,我看到一個比較小的,但顯著一些錯誤有以下消息:
System.Web.HttpUnhandledException: 型「系統的異常。 Web.HttpUnhandledException' 被拋出。 ---> System.InvalidOperationException: 參數從類型 「System.String」轉換爲類型 'System.Boolean'失敗。有關更多信息,請參閱內部 例外。 ---> System.FormatException:Y不是布爾的有效值 。 ---> System.FormatException:字符串不是 被識別爲有效的布爾值。
這似乎當視圖引擎嘗試後後呈現的形式出現,而從ValueProvider返回的複選框的值是這樣的:
Y,假
OR
N,假
是在原來的形式呈現的HTML看起來像:
<input id="AgreeToRules" name="AgreeToRules" type="checkbox" value="true" />
<input name="AgreeToRules" type="hidden" value="false" />
在測試過程中,我希望(和顯示)張貼值的樣子:
真,假
如果檢查或
發lse
如果未選中。那麼N和Y從哪裏來?
我將用戶代理添加到從錯誤處理程序返回的信息列表中,並且它出現(到目前爲止)所有錯誤都出現在帶有FF 3.0.10的Windows XP下,但這正是我已經測試過的和測試過程中不存在這個問題。
有什麼想法?
Y和n我們用普通的HTML代碼替換助手解決了嗎?這不就是什麼Microsoft Jet(由Access使用)用於其布爾字段? – Powerlord 2009-06-01 19:17:00
也許,但由於這與Jet或Access無關,我不確定它是否相關。 – Chris 2009-06-01 19:20:05
要發佈一些我現在刪除的答案:我剛剛檢查了HTML規範,並且複選框的默認值暗示爲「on」沒有給出值;我不知道Y或N可能來自哪裏,除非它是ASP.NET MVC特定的。 – Powerlord 2009-06-01 19:26:49