【问题标题】:Asp.net ViewModel for Create and Update Actions用于创建和更新操作的 Asp.net ViewModel
【发布时间】:2012-09-05 13:41:49
【问题描述】:

在 ASP.NET MVC 应用程序中,每个控制器操作是否有不同的 ViewModel,或者所有操作都有一个共享的 ViewModel。

例如,如果我有一个带有 List 和 Create 操作的 Users 控制器,我应该有一个 UserViewModel,还是应该有一个 CreateUserViewModel 和 ListUsersViewModel?

【问题讨论】:

    标签: .net asp.net-mvc asp.net-mvc-4 viewmodel


    【解决方案1】:

    由于列出所有用户和创建/编辑用户是不同的事情,您可能需要 2 个不同的视图。但是,您可以在创建用户和编辑用户之间创建和共享编辑模型/视图。

    【讨论】:

    【解决方案2】:

    如果它们的属性几乎相同,那么可以共享。如果没有,则创建 2。老实说,我通常最终会分享。

    【讨论】:

      【解决方案3】:

      这取决于您在视图中需要哪些信息。如果他们使用完全相同的信息,那么共享 ViewModel 就可以了。如果其中一个具有与另一个相同的所有信息,再加上更多,那么您可以让一个继承另一个,如下所示:

      public class ListViewModel
      {
          public string Username { get; set; }
          public string Email { get; set; }
      }
      
      public class CreateViewModel : ListViewModel
      {
          public bool AcceptedTOA { get; set; }
      }
      

      通过这样的方式,您可以在创建视图中访问所有三个值,但在列表视图中只能访问 UsernameEmail

      编辑:添加更多选项...

      除了继承之外,您还可以将它们放在彼此的内部,例如

      public class CreateViewModel
      {
          public ListViewModel ListViewModel { get; set; }
          public bool AcceptedTOA { get; set; }
      }
      

      ..然后在你的视图中你会消费......

      @Model.ListViewModel.Username
      

      【讨论】:

        猜你喜欢
        • 2017-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        相关资源
        最近更新 更多