簡體   English   中英

當value為null時,將nullable boolean傳遞給部分視圖不起作用

[英]Pass nullable boolean to partial view not working when value is null

我想在剃須刀視圖中這樣做:

@{ Html.RenderPartial("_Checkbox", Model.SomeNullableBoolean); }

_Checkbox.cshtml:

@model bool?

@if (Model == null)
{
    Some code
}
else if (Model == true)
{
    Some other code
}

只要將Model.SomeNullableBoolean設置為truefalse這就可以正常工作。 但是如果值為null,則會出現以下錯誤:

傳遞到字典中的模型項的類型為'System.Data.Entity.DynamicProxies.MyAwesomeModel_EB6A12E11ECADA2C6B22289ACDF73813854383896F2E78956FDFFE6225F0404F',但此字典需要類型為'System.Nullable`1 [System.Boolean]'的模型項。

模型中的可空屬性( MyAwesomeModel )定義如下:

public bool? SomeNullableBoolean { get; set; }

有什么想法我應該如何進一步調查這個?

我遵循了Stephen Muecke的建議並采用了ViewDataDictionary方法:

@{ Html.RenderPartial("_Checkbox", null, new ViewDataDictionary { { "BoolValue", Model.SomeNullableBoolean}}); }

_Checkbox.cshtml:

@{
    var theValue = (bool?) ViewData["BoolValue"];
}

@if (theValue == null)
{
    something
}
else if (theValue == true)
{
    something
}
else
{
    something
}

這很完美!

當你將模型傳遞給null的partial時,默認情況下它會在主視圖中使用模型,所以在你的情況下它的傳遞和MyAwesomeModel實例到一個期望模型是bool?的視圖bool? (因此錯誤)。

如果屬性的值為null則需要有條件地傳遞新的ViewDataDictionary

@{ Html.RenderPartial("_Checkbox", Model.SomeNullableBoolean.HasValue ?
    new ViewDataDictionary(){ Model = Model.SomeNullableBoolean } : 
    new ViewDataDictionary()); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM