2014-03-05 99 views
2

您好我有一個複選框可空對象必須有一個價值ASP.NET MVC 5複選框

@Html.CheckBoxFor(model => model.VisitRequested.Value, new {onClick = "showHide();"}) 

它拋出異常(上圖),如果複選框沒有點擊。如果複選框未選中,我希望該值爲0或false。

型號代碼:

[DisplayName("Request a Visit")] 
public Nullable<bool> VisitRequested { get; set; } 
+0

的可能重複[MVC3:爲空的布爾創建複選框(http://stackoverflow.com/questions/6849774/mvc3-creating-checkbox-for-nullable-boolean) – hazzik

回答

0

是的,這是因爲model.HasValue是假的。加;

if (model.VisitRequested.HasValue) 
    @Html.CheckBoxFor(model => model.VisitRequested.Value, new {onClick = "showHide();"}); 
else 
    //somethings wrong, not sure what you want to do 

基本上是指示對象爲空。在你會發現的文檔中;

例外:
出現InvalidOperationException 條件:
HasValue屬性爲假

這是你遇到了什麼。

+0

模型在當前上下文中不存在。我是否必須爲代碼使用@ {}符號? – ASPCoder1450

+0

@ ASPCoder1450我不這麼認爲,我猜想還有其他一些導致它的小語法錯誤。哦,是的,我剛看到它。我會編輯。當有一個間接層時,我從'model'訪問'HasValue'。錯誤消息不直觀:| – evanmcdonnal

3

一個Nullable<T>Value屬性會引發InvalidOperationException當該值是空(實際上當HasValue == false)。嘗試:

@Html.CheckBoxFor(model => model.VisitRequested, new {onClick = "showHide();"}) 

只需使用model.VisitRequested並最終把它包裝內的if

@if (Model.VisitRequested.HasValue) 
{ 
    @Html.CheckBoxFor(model => model.VisitRequested, new {onClick = "showHide();"}) 
} 
+0

System.Nullable 不包含GetValueOfDefault的定義 – ASPCoder1450

+0

對不起。它是'Or'而不是'Of'。我更新了我的答案。 –

+0

System.Web.Mvc.dll中發生類型'System.InvalidOperationException'的異常,但未在用戶代碼中處理 附加信息:模板只能用於字段訪問,屬性訪問,單維數組索引或單參數自定義索引器表達式。 – ASPCoder1450

相關問題