用于创建和更新操作的Asp.net ViewModel

时间:2012-09-05 13:41:50

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

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果它们几乎是相同的属性,那么分享就可以了。如果没有,那么创建2.我通常最终分享是诚实的。

答案 2 :(得分: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