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

6
我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:

我在向局部视图传递正确数据方面遇到了问题,我不确定为什么会失败。

假设我有以下模型:

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?为什么不能只传递模型?

注意:我正在使用一个库,有时会让我感到困惑。如果上述行为不是预期的,则可能是该库的问题。

2个回答

8

如果您向部分视图传递的模型为 null,则会发生这种情况。不要将null值传递给部分视图,否则它会对其类型感到困惑。


0
你尝试过使用 Model.Wibble 而不是 MyModel.Wibble 传递子模型吗?相关的模型可以在视图中通过 Model 访问,而不是模型的名称。

这只是一个打字错误,我已经修正了问题。 - Martijn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接