如何在一个布局中使用多类型模型(带部分)
本文关键字:多类型 模型 带部 一个 布局 | 更新日期: 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
方法。
另一种选择是你可以去通用视图模型看到这个线程。