如何在一个布局中使用多类型模型(带部分)

本文关键字:多类型 模型 带部 一个 布局 | 更新日期: 2023-09-27 18:37:04

我有一个页面,我使用模型可以有不同的类型(取决于动作和控制器)。当我想使用从模型中获取参数的部分时,我的问题就开始了,例如:

@Html.Partial("~/Views/Components/SubMenu.cshtml", MyProject.Web.MenuHelper.GetSubMenu(Model.field1))

但是,如果我不声明模型类型,我会遇到类似 Partial can not use dynamic values 的错误。所以我有想法来解决它:

@if (Model.GetType() == typeof(ContentPage))
{
    @model ContentPage
    @Html.Partial("~/Views/Components/SubMenu.cshtml", MyProject.Web.MenuHelper.GetSubMenu(Model.field1))
}
else if (Model.GetType() == typeof(Data.Models.Directory))
{
    @model Directories
    @Html.Partial("~/Views/Components/SubMenu.cshtml", MyProject.Web.MenuHelper.GetSubMenu(Model.field2))
}

但是后来我有这样的错误:ContentPage.field2 no exist.

你有什么想法如何解决吗?

任何帮助将不胜感激。

如何在一个布局中使用多类型模型(带部分)

根据条件使用不同模型强键入视图或部分视图不是一个好主意。如果您仍然想在视图/部分视图中使用不同类型的模型,那么您必须采用ViewData/ViewBag方法。

另一种选择是你可以去通用视图模型看到这个线程。