将其他ViewData传递给DisplayFor模板

Mul*_*ack 6 c# asp.net-mvc viewdata display-templates

我想传递一个对象Model.AvailableVerticalType非常久远了 expression,并template name在调用HTML辅助DisplayFor.在不传递对象的情况下,DisplayFor语法如下所示:

@Html.DisplayFor(o => offer, MVC.Shared.Views.DisplayTemplates.OfferDetail)
Run Code Online (Sandbox Code Playgroud)

OfferDetail模板接受一个类型的对象offer而已.

@model DGS.DGSAPI.UI.BusinessModels.Offer
Run Code Online (Sandbox Code Playgroud)

所以我需要一种通过ViewData发送它的方法.可能吗?在DisplayFor中传递Viewdata的语法是什么?

小智 5

正如 user3559349 所建议的,您可以将匿名对象传递给 DisplayFor() 方法,并且该对象将成为 ViewData 字典的一部分。

在您看来:

@Html.DisplayFor(o => offer, "OfferDetail", new {AvailableVerticalType = Model.AvailableVerticalType }
Run Code Online (Sandbox Code Playgroud)

在您的 OfferDetail 模板中:

(AvailableVerticalType)ViewData["AvailableVerticalType"]
Run Code Online (Sandbox Code Playgroud)

您还可以创建一个局部视图,该视图具有为 AvailableVerticalType 声明的模型,并在主视图中引用该模型。

@model 可用垂直类型