小编典典

带有 null 模型的 renderpartial 传递了错误的类型

all

我有一个页面:

<%@ Page Inherits="System.Web.Mvc.View<DTOSearchResults>" %>

在其上,以下内容:

<% Html.RenderPartial("TaskList", Model.Tasks); %>

这是 DTO 对象:

public class DTOSearchResults
{
    public string SearchTerm { get; set; }
    public IEnumerable<Task> Tasks { get; set; }

这是部分:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Task>>" %>

当 Model.Tasks 不为空时,一切正常。但是,当它为空时,我得到:

传递到字典中的模型项的类型为“DTOSearchResults”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[Task]”的模型项。

我认为它一定不知道要使用哪个重载,所以我这样做(见下文)是为了明确,但我仍然遇到同样的问题!

<% Html.RenderPartial("TaskList", (object)Model.Tasks, null); %>

我知道我可以通过检查 null 或什至不传递 null 来解决这个问题,但这不是重点。为什么会这样?


阅读 80

收藏
2022-07-02

共1个答案

小编典典

安德鲁,我认为您遇到的问题是当您传递的模型为空时,RenderPartial
方法使用调用(视图)的模型到局部视图的结果。您可以通过执行以下操作来解决这种奇怪的行为:

<% Html.RenderPartial("TaskList", Model.Tasks, new ViewDataDictionary()); %>

这有帮助吗?

2022-07-02