我应该在asp.net中将登录和注册的ViewModel分开吗?

问题描述 投票:0回答:2

我的应用程序中有 3 种类型的用户(在 asp.net mvc-5 中):管理员、医生和用户。在 Models 文件夹中,我创建了另外 3 个文件夹,每个文件夹对应一种类型的用户。我是否应该创建一个 ViewModel,假设 DoctorViewModel 将携带有关医生的所有信息?或者我应该创建 DoctorLoginViewModel 和 DoctorRegistractionViewModel 等?

注意:我在数据库中有单独的表格用于凭证(电子邮件和通行证)和个人信息(年龄、出生日期、性别等)。

c# asp.net asp.net-mvc-5
2个回答
0
投票

您只需使用一个模型用户即可执行这 3 种类型的所有常见属性。

public class User
{
    public string Name { get; set; }
    public string LastName { get; set; }
    public UseType Type { get; set; }
}

public enum UserType
{
   User = 1,
   Doctor = 2,
   Admin = 3
}

然后,如果您想为每个用户拥有单独的视图,那么您可以根据需要创建 DoctorViewModel 或 UserViewModel。

我建议您阅读有关 asp.net mvc 中的基于角色的授权


0
投票

这取决于您尝试创建的应用程序的规模。一般来说,为登录和注册等不同任务使用单独的 ViewModel 是明智之举。

DoctorLoginViewModel:使用它进行登录。它只需要电子邮件和密码字段。这使其变得简单并专注于登录过程。 夏普

public class DoctorLoginViewModel
{
    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }
}

DoctorRegistrationViewModel:这个是用于注册的。除了电子邮件和密码之外,它还包括更多详细信息,例如姓名、出生日期和性别。

public class DoctorRegistrationViewModel
{
    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    // Additional info like name, DOB, etc.
    [Required]
    public string FullName { get; set; }

    public DateTime DateOfBirth { get; set; }
    public string Gender { get; set; }

    // And other fields as needed...
}

通过这样做,您的代码将保持整洁且易于管理。每个 ViewModel 都有明确的目的,您只需询问每个特定操作所需的信息。这一切都是为了保持物品整洁和安全!

您可以对应用程序中的其他用户角色使用相同的方法。我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.