错误的模型类型但没有通过模型

时间:2015-05-05 11:13:30

标签: asp.net-mvc

我对模型"_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”的模型项。

当我甚至不发送模型时(部分视图具有模型为空时的逻辑)?

3 个答案:

答案 0 :(得分:4)

默认情况下,如果您未指定模型,或者您传递的模型为null,则Html.Partial会使用ViewDataDictionary中的模型(在您的情况下为WorkspaceData}要解决此问题,您可以将Release的新实例传递给部分

@Html.Partial("_Initial", new WNCT_Web_Application.BL.Release.Release())

答案 1 :(得分:0)

这里有一个设计问题。而不是一个名为_Initial的部分视图,看起来您需要两个局部视图

  • 当Model或Model.Release为null时使用的一个
  • 当Model.Release不为空时使用

例如:

@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方法提供模型,它如何将视图模型发送到部分。