0

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

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

4

3 回答 3

0

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

于 2012-09-05T13:44:43.770 回答
0

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

于 2012-09-05T13:54:15.150 回答
0

这取决于您在视图中需要哪些信息。如果他们使用完全相同的信息,那么共享 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
于 2013-11-08T15:24:48.453 回答