我对模型"_Initial"
@model Release
在主视图中我有:
@if (Model == null || Model.Release == null)
{
@Html.Partial("_Initial")//error here
}
else
{
@Html.Partial("_Initial", Model.Release)
}
主视图有模型:@model WorkspaceData
我不能幻影我为什么会收到错误:
传递到字典中的模型项的类型为“WNCT_Web_Application.BL.Workspace.Monitoring.WorkspaceData”,但此字典需要类型为“WNCT_Web_Application.BL.Release.Release”的模型项。
当我甚至不发送模型时(部分视图具有模型为空时的逻辑)?
答案 0 :(得分:4)
默认情况下,如果您未指定模型,或者您传递的模型为null
,则Html.Partial
会使用ViewDataDictionary
中的模型(在您的情况下为WorkspaceData
}要解决此问题,您可以将Release
的新实例传递给部分
@Html.Partial("_Initial", new WNCT_Web_Application.BL.Release.Release())
答案 1 :(得分:0)
这里有一个设计问题。而不是一个名为_Initial
的部分视图,看起来您需要两个局部视图
例如:
@if (Model == null || Model.Release == null)
{
@Html.Partial("_InitialNullRelease")
}
else
{
@Html.Partial("_Initial", Model.Release)
}
显然,你可以选择一个比我给出的更好的名字。
根据_Initial
实际上有多复杂,或者它的意图,将视图拆分为两个可能是一个很好的方法。
答案 2 :(得分:0)
解决方案:Html.Partial("_Initial", null, new ViewDataDictionary())
感谢 Stephen Muecke 告诉我ViewDataDictionary
以及如果没有为Html.Partial
方法提供模型,它如何将视图模型发送到部分。