【问题标题】:Can i use multiple viewModel in same view in MVC? [duplicate]我可以在 MVC 的同一个视图中使用多个 viewModel 吗? [复制]
【发布时间】:2018-05-28 14:10:26
【问题描述】:

是否可以在同一个视图中使用多个视图模型?

我试图通过 @model 属性使用视图模型

但是如果我可以使用第二个 viewModel,我会卡住,我把第二个放在哪里?

【问题讨论】:

  • 视图中只能有一个@model 声明(您的视图模型可以包含来自多个模型的属性)
  • 这个问题可能意味着很多事情——你可以使用复合 ViewModel 吗?或者您可以互换使用视图模型吗?两者都同意
  • “多视图模型”最简单的形式是 一个 具有多个属性的视图模型。这些属性本身可以是复杂的对象
  • 这些问题与模型有关,我的问题是特定于视图模型的
  • @SmartestVEGA 不,他们没有。它们特定于 viewmodels。是的,您可以拥有复合视图模型。是的,您可以拥有可互换的视图模型。您还可以使用 array 作为 ViewModel,允许您使用同一 ViewModel 的多个实例

标签: c# .net asp.net-mvc viewmodel


【解决方案1】:

您不能在同一个视图中发送两个视图模型。

作为一种快速解决方法,您可以创建另一个类来包装您要在视图中发送的所有模型。通过这种方式,您将受益于强类型视图。

  public class Foo
  {
    public int ID { get; set; }
    public string Name { get; set; }
  }

  public class Bar
  {
    public int ID { get; set; }
    public string Name { get; set; }
  }

  public class FooBar
  {
    public Foo Foo { get; set; }
    public Bar Bar { get; set; }
  }

在您的操作方法中:

  var foo = new Foo
  {
    ID = 1,
    Name = "Foo"
  };

  var bar = new Bar
  {
    ID = 2,
    Name = "Bar"
  };

  var fooBar = new FooBar
  {
    Foo = foo,
    Bar = bar
  };

  return View(fooBar);

【讨论】:

  • 可以显示为此的代码示例吗?
  • 这不是“快速解决方法”,这就是 ViewModel 的工作方式以及可组合性和部分视图的基础
  • 我已经用一个例子编辑了我的答案。
  • 顺便说一句,谁对可以演示更高级 MVC 功能(例如如何使用局部视图)的答案投了反对票?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 2016-03-26
相关资源
最近更新 更多