将模型属性传递给局部视图

时间:2014-04-10 11:27:48

标签: c# asp.net-mvc asp.net-mvc-4

我无法将正确的数据传递到部分视图,而且我不确定它为什么会失败。

说我有模特

public class SubModel {
  public string Wobble {get; set;}
}

public class MyModel {
  public SubModel Wibble {get; set;}
}

和观看次数

MyView.cshtml

@model MyModel

@Html.Partial("SomePartial", Model.Wibble)

SomePartial.cshtml

@model SubModel

<h1>Victory!</h1>

此操作因The model item passed into the dictionary is of type 'MyModel', but this dictionary requires a model item of type 'MySubModel'

而失败

当我将MyView.cshtml更改为

@model MyModel

@Html.Partial("SomePartial", Model.Wibble, new ViewDataDictionary<MySubModel>(Model.Wibble))

它按预期工作。

为什么我需要明确传递ViewDataDictionary?为什么我不能通过模型​​?

注意:我使用的库可以帮助我实现hrm吗?很多时候。如果不期望上述行为,则可能是此库故障。

2 个答案:

答案 0 :(得分:8)

当您传递给局部视图的模型为null时,会发生这种情况。不要将null传递给局部视图,否则会对其类型感到困惑。

答案 1 :(得分:0)

您是否尝试使用Model.Wibble代替MyModel.Wibble传递子模型?可以在具有Model的视图中访问关联的模型,而不是模型的名称。