繁体   English   中英

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

[英]How to pass ViewModel property as model to partial view?

我有一个名为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 as Model。 现在我需要将LogFilter(带数据)传递给局部视图,如:

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

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

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

有什么想法吗?

因为Filter属性为null,所以框架会将模型从父视图传递给partial,即LogViewModel ,而部分视图则需要LogFilter类型。

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

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

在这种情况下,您的局部视图应该期望“ LogFilter ”作为模型。 但我认为你传递LogFilter而部分视图需要“ LogViewModel ”。 请纠正不匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM