MVC3 将 @model 传递给部分视图
我有两个完全相同的部分视图,但对于@model。
@model Project.Models.X
@model Project.Models.Y
如何将此模型类型传递给视图,以便我可以对两者使用相同的视图?
I have two partial views which are exactly the same, but for the @model.
@model Project.Models.X
@model Project.Models.Y
How could I pass this model type to the view so that I can use the same view for both?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不确定这是否是最佳实践,但您也可以使用 HTML.RenderAction 调用控制器并让它返回具有您想要的任何模型的 PartialViewResult ,如下所示
:
Not sure if this is best practice, but you could also use HTML.RenderAction to call your controller and have it return a PartialViewResult with whatever model you want, like so:
and
您可以创建一个 ViewModel Z,并将其传递给 View。
如果您想传递模型 X 或 Y,只需将其传递给 Z,然后将模型 Z 传递给 View。
You can create a ViewModel Z, which passed to View.
If you want to pass model X or Y, just passed that to Z then pass model Z to View.
使两个类实现相同的接口,并使用该接口作为您的模型。
正如蒂姆所建议的:如果可能的话,您也可以从同一个基类继承。尽管这并不总是可行,但使用接口方法大多是可能的。
Make both classes implement the same interface, and use the interface as your model.
As suggested by Tim: If possible you could also inherit from the same base class. Although this is not always possible, using the interface approach is mostly possible.
大部分像 gandil:创建一个 ViewModel Z 但使用 Automapper 从 Y 和 X 进行映射。这样你就可以保持你的 UI 模型干净和干燥。
Mostly like gandil: Create a ViewModel Z but use Automapper to map from Y and X. That way you can keep your UI models clean and DRY.