我试图在我的剃刀视图中这样做:
private void button3_Click(object sender, EventArgs e)
{
HAP.HtmlWeb web = new HAP.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.
Load(@"https://mywebsite");
string str = doc.DocumentNode.InnerText;
MessageBox.Show(str);
}
_Checkbox.cshtml:
@{ Html.RenderPartial("_Checkbox", Model.SomeNullableBoolean); }
只要将@model bool?
@if (Model == null)
{
Some code
}
else if (Model == true)
{
Some other code
}
设置为Model.SomeNullableBoolean
或true
,此方法就可以正常工作。
但是如果值为null,我会收到以下错误:
传递到字典中的模型项是类型的 ' System.Data.Entity.DynamicProxies.MyAwesomeModel_EB6A12E11ECADA2C6B22289ACDF73813854383896F2E78956FDFFE6225F0404F&#39 ;, 但是这个字典需要一个类型的模型项 ' System.Nullable`1 [System.Boolean]'
模型(false
)中的可空属性定义如下:
MyAwesomeModel
我还应该如何进一步调查此事?
答案 0 :(得分:1)
我遵循了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
}
这完美无缺!
答案 1 :(得分:1)
当您将模型传递给null
的部分时,默认情况下它将在主视图中使用该模型,因此在您的情况下,它将MyAwesomeModel
的传递和实例传递给期望的视图一个bool?
的模型(因此错误)。
如果属性值为ViewDataDictionary
,则需要有条件地传递新null
@{ Html.RenderPartial("_Checkbox", Model.SomeNullableBoolean.HasValue ?
new ViewDataDictionary(){ Model = Model.SomeNullableBoolean } :
new ViewDataDictionary()); }