代码之家  ›  专栏  ›  技术社区  ›  Richard Ev

当模型是父模型上的属性且为空时,强类型分部视图出错。

  •  5
  • Richard Ev  · 技术社区  · 15 年前

    我接到以下例外情况 Html.RenderPartial 以下内容:

    传递到字典的模型项的类型为“childclass”,但此字典需要“parentclass”类型的模型项。

    这两个类是相关的:

    public class ChildClass { /* properties */ }
    
    public class ParentClass
    {
        public ChildClass ChildProperty { get; set; }
    
        /* other properties */
    }
    

    我有一个例子 ParentClass 其中的值 ChildProperty null .

    我有两个部分观点, ParentView ( ViewUserControl<ParentClass> )和 ChildView ( ViewUserControl<ChildClass> )

    在第一个视图中,我有以下内容…

    <% Html.RenderPartial("~/Views/Controls/ChildView.ascx", Model.ChildProperty); %>
    

    这是引发此日志顶部列出的异常的行。

    我已经验证了正确的功能,如果 儿童财产 不为空。为什么MVC认为此属性的空值是父类型?

    我可以通过添加只呈现 儿童观 如果 儿童财产 不是空的,但这一半破坏了观点。

    1 回复  |  直到 15 年前
        1
  •  5
  •   Community datashaman    7 年前

    请看下面的答案: renderpartial with null model gets passed the wrong type

    如果有效,修复程序应该如下所示:

    <% Html.RenderPartial("~/Views/Controls/ChildView.ascx", Model.ChildProperty, 
          new ViewDataDictionary()); %>