我的应用程序中有 3 种类型的用户(在 asp.net mvc-5 中):管理员、医生和用户。在 Models 文件夹中,我创建了另外 3 个文件夹,每个文件夹对应一种类型的用户。我是否应该创建一个 ViewModel,假设 DoctorViewModel 将携带有关医生的所有信息?或者我应该创建 DoctorLoginViewModel 和 DoctorRegistractionViewModel 等?
注意:我在数据库中有单独的表格用于凭证(电子邮件和通行证)和个人信息(年龄、出生日期、性别等)。
您只需使用一个模型用户即可执行这 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 中的基于角色的授权。
这取决于您尝试创建的应用程序的规模。一般来说,为登录和注册等不同任务使用单独的 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 都有明确的目的,您只需询问每个特定操作所需的信息。这一切都是为了保持物品整洁和安全!
您可以对应用程序中的其他用户角色使用相同的方法。我希望这有帮助!