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

时间:2014-06-24 06:40:27

标签: c# asp.net-mvc razor model-view-controller renderpartial

给定视图模型类

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类型的模型项。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

对不起,我刚刚发现错误:

在真实的项目中,我正在处理我传递的模型在动作代码的后续部分被设置为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 });