我有一个 _Address 部分视图。该部分视图包含与地址模型匹配的所有地址字段。在此视图的顶部,我将模型设置如下:
@模型数据.地址
在我的 CustomerInfo 视图中,我尝试以下操作将地址字段呈现为表单的一部分:
@Html.Partial("~/Views/Shared/Partial/_Address.cshtml")
我收到的错误是:
传递到字典中的模型项的类型为“Data.Customer”,
但该字典需要“Data.Address”类型的模型项。
我假设我收到此错误,因为我的 CustomerInfo 视图中声明的模型属于 Data.Customer 类型,并且它会自动尝试将其传递到我的 _Address 视图,其中包含 Data.Address 类型的模型。
使这种流动正常进行的正确方法是什么?我注意到还有一个 @Html.RenderPartial("ViewName", model) 帮助程序,但不知道如何传递它 Data.Address,因为我的 CustomerInfo 视图中的主要模型是 Data.Customer。
我猜你的主要模型Data.Customer
已经具有一个或多个类型属性Data.Address
您想要显示的内容。所以你会使用@Html.Partial
helper 并像这样传递该属性的值:
@Html.Partial("ViewName", Model.SomeAddressProperty)
作为使用的替代方案Html.Partial
您可以使用编辑器/显示模板的帮助者。他们按惯例工作。所以重命名你的_Address.cshtml
偏向于~/Views/Shared/EditorTemplates/Address.cshtml
然后在主视图中使用:
@Html.EditorFor(x => x.SomeAddressProperty)
或者,如果部分不包含输入字段或表单,您可以使用显示模板:~/Views/Shared/DisplayTemplates/Address.cshtml
进而:
@Html.DisplayFor(x => x.SomeAddressProperty)
这里的约定是模板的名称和位置。由于类型SomeAddressProperty
is Address
,ASP.NET MVC会寻找对应的Address.cshtml
模板。
如果您的主视图模型没有地址属性,您只需继续添加一个或多个此类属性并将它们填充到呈现主视图的控制器操作中。然后您可以调用每个属性的部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)