MVC3 将 @model 传递给部分视图

发布于 2024-11-16 06:15:18 字数 136 浏览 3 评论 0原文

我有两个完全相同的部分视图,但对于@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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

樱花坊 2024-11-23 06:15:18

不确定这是否是最佳实践,但您也可以使用 HTML.RenderAction 调用控制器并让它返回具有您想要的任何模型的 PartialViewResult ,如下所示

  @{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });}

 public PartialViewResult MyPartialAction(int? someID)
 {
        return PartialView("MyPartial",SomeModel);
 }

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:

  @{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });}

and

 public PartialViewResult MyPartialAction(int? someID)
 {
        return PartialView("MyPartial",SomeModel);
 }
痴情换悲伤 2024-11-23 06:15:18

您可以创建一个 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.

那一片橙海, 2024-11-23 06:15:18

使两个类实现相同的接口,并使用该接口作为您的模型。

正如蒂姆所建议的:如果可能的话,您也可以从同一个基类继承。尽管这并不总是可行,但使用接口方法大多是可能的。

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.

作妖 2024-11-23 06:15:18

大部分像 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文