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

Mar*_*ijn 5 c# asp.net-mvc asp.net-mvc-4

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

说我有模特

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

public class MyModel {
  public SubModel Wibble {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

和意见

MyView.cshtml

@model MyModel

@Html.Partial("SomePartial", Model.Wibble)
Run Code Online (Sandbox Code Playgroud)

SomePartial.cshtml

@model SubModel

<h1>Victory!</h1>
Run Code Online (Sandbox Code Playgroud)

这失败了 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))
Run Code Online (Sandbox Code Playgroud)

它按预期工作.

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

注意:我正在使用一个可以让我进入hrm的库吗?很多时候.如果不期望上述行为,则可能是此库故障.

Mar*_*ijn 8

传递给局部视图的模型是这种情况null.不要将null传递给局部视图,否则会对其类型感到困惑.


小智 0

您是否尝试使用Model.Wibble而不是传递子模型MyModel.Wibble?关联的模型可以在视图中使用模型(而不是模型名称)进行访问。