如何将ViewModel属性作为模型传递给局部视图?

Jac*_*ski 4 c# asp.net asp.net-mvc razor

我有一个名为LogViewModel的ViewModel,我有3个属性,如下所示.

public class LogViewModel
{
    public IEnumerable<Log> Logs { get; private set; }
    public PaginationHelper Pagination { get; set; }
    public LogFilter Filter { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

LogViewModel传递给View as Model.现在我需要将LogFilter(带数据)传递给局部视图,如:

@Html.Partial("_LogsFilter", Model.Filter)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法,但总是得到同样的错误:

传递到字典中的模型项的类型为"Infrastructure.Presentation.Desk.ViewModels.LogViewModel",但此字典需要"Infrastructure.Presentation.Desk.Models.LogFilter"类型的模型项.

有什么想法吗?

Zab*_*sky 7

因为Filterproperty是null,所以框架会将模型从父视图传递给partial,即LogViewModel,部分视图期望类型为LogFilter.

为了防止这种情况,请确保Filter在呈现视图之前实例化属性,或者执行以下操作:

@Html.Partial("_LogsFilter", Model.Filter ?? new LogFilter())
Run Code Online (Sandbox Code Playgroud)