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

本文关键字:局部 视图 模型 ViewModel 属性 | 更新日期: 2023-09-27 18:14:49

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

public class LogViewModel
{
    public IEnumerable<Log> Logs { get; private set; }
    public PaginationHelper Pagination { get; set; }
    public LogFilter Filter { get; set; }
}

LogViewModel作为模型传递给View。现在我需要将LogFilter(带数据)传递给部分视图,如:

@Html.Partial("_LogsFilter", Model.Filter)

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

传入字典的模型项类型为"Infrastructure.Presentation.Desk.ViewModels.LogViewModel",但是这本字典需要一个类型的模型项"Infrastructure.Presentation.Desk.Models.LogFilter"。

任何想法吗?

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

由于Filter属性为null,框架将把模型从父视图传递给部分视图,即LogViewModel,而部分视图期望类型为LogFilter

为了防止这种情况,确保Filter属性在呈现视图之前被实例化,或者做这样的事情:

@Html.Partial("_LogsFilter", Model.Filter ?? new LogFilter())

在这种情况下,您的局部视图应该期望"LogFilter"作为模型。但我认为你正在传递LogFilter和部分视图期望"LogViewModel"。请纠正错误。