renderpartial with null model gets passed the wrong type
asp.net-mvc, renderpartial
Solution
Andrew I think the problem you are getting is a result of the RenderPartial method using the calling (view)'s model to the partial view when the model you pass is null.. you can get around this odd behavior by doing:
<% Html.RenderPartial("TaskList", Model.Tasks, new ViewDataDictionary()); %>
Does that help?
Problem
I have a page: ``` <%@ Page Inherits="System.Web.Mvc.View<DTOSearchResults>" %> ``` And on it, the following: ``` <% Html.RenderPartial("TaskList", Model.Tasks); %> ``` Here is the DTO object: ``` public class DTOSearchResults { public string SearchTerm { get; set; } public IEnumerable<Task> Tasks { get; set; } ``` and here is the partial: ``` <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Task>>" %> ``` When Model.Tasks is not null, everything works fine. However when its null I get: The model item passed into the dictionary is of type 'DTOSearchResults' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[Task]'. I figured it must not know which overload to use, so I did this (see below) to be explicit, but I still get the same issue! ``` <% Html.RenderPartial("TaskList", (object)Model.Tasks, null); %> ``` I know I can work around this by checking for null, or not even passing null, but that's not the point. Why is this happening?