如何将模型属性传递给具有不同模型的局部视图

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

给定一个视图模型类

public class Foo 
{
   public string Fuzz { get; set; }
   public Bar Bar { get; set; }
}
public class Bar
{
   public string Fizz { get; set; }
}

在控制器操作中,我将以下模型传递到视图:

View(new Foo { Fuzz = "Fizz", Bar = new Bar{ Fizz = "Fuzz" } });

在视图Foo.cshtml 中

@model Foo
@Model.Fuzz
@{ Html.RenderPartial("BarPartial", Model.Bar); }

在视图中部分BarPartial.cshtml

@model Bar
@Model.Fizz

抛出错误:

传递到字典中的模型项的类型为Foo,但此字典需要类型为Bar的模型项。

如何将父模型的属性传递给具有属性类型的模型的局部视图?

如何将模型属性传递给具有不同模型的局部视图

public ActionResult test2()
        {
            return View(new Foo { Fuzz = "Fizz", Bar = new Bar { Fizz = "Fuzz" } });
        }

我的观点

@model Foo
@Model.Fuzz
@{ Html.RenderPartial("_partial1",Model.Bar); }

我的部分

@model Bar
@Model.Fizz

没有不同的代码,对我来说很好

很抱歉我刚刚发现了错误:

在我正在进行的实际项目中,我传递的模型似乎在操作代码的后面部分被设置为null。

将出现此错误:

The model item passed into the dictionary is of type Foo but this dictionary requires a model  item of type Bar.

如果

View(new Foo { Fuzz = "Fizz", Bar = null });