【问题标题】:Replacing ViewModels with Tuples用元组替换 ViewModel
【发布时间】:2010-07-06 16:48:37
【问题描述】:

我刚刚开始了一个新项目,该项目目前包含相当多的 ViewModel DTO 类。

我想知道用元组替换许多这些 DTO 并将其用作将一堆对象传输到我的视图的方法是否有用,甚至是良好的做法。

你怎么看?这是元组的正确用法还是我在这里偏离了标记?

【问题讨论】:

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


    【解决方案1】:

    通常视图模型具有与之关联的元数据,其中允许您执行验证并与编辑器/显示模板集成。元组似乎不合适。另一个缺点是它们不太清楚地表达视图模型中每个属性的用途(Model.Item1Model.Item2,...,只有原始开发人员才能理解这一点,如果他喜欢几天后我连他都说不通了)。

    【讨论】:

    • 感谢你们(@Darin 和@Mathew Abbott)的回答。很有帮助。我不得不选择一个作为接受,我选择了这个,因为它有一些额外的信息。两者都非常有帮助,尽管欢呼。
    • 当我使用 Tuple 而不是 ViewModel 时,在视图中我使用具有逻辑名称的局部变量并将它们设置为 Model.Item1, ...
    【解决方案2】:

    我在使用元组时看到的一个问题是,在您看来:

    inherits="ViewPage<Tuple<Model1, Model2>>"
    

    ...等,当您使用这些模型时,您必须以如下方式访问它们:

    Model.Item1,
    Model.Item2
    

    ...这不像使用一个好的强类型视图模型那么清楚。

    【讨论】:

      【解决方案3】:

      在 C#7 中,您现在可以命名项目 - 下面的代码几乎是一个免费的映射器,我认为它可以替换不需要附加任何行为的 DTO。

          public (string first, string last, int age) GetTuple()
          {
              return ("John", "Connor", 1);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-13
        • 1970-01-01
        • 1970-01-01
        • 2019-03-30
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 2023-04-02
        相关资源
        最近更新 更多