#c# #asp.net #asp.net-mvc-5
#c# #asp.net #asp.net-mvc-5
Вопрос:
В моем приложении есть 3 типа пользователей (в asp.net mvc-5): администратор, Врач и Пользователь. В папке Models я создал 3 другие папки, по одной для каждого типа пользователя. Должен ли я создать единую ViewModel, предположим, DoctorViewModel, которая будет содержать всю информацию о doctor? Или я должен создать DoctorLoginViewModel и DoctorRegistractionViewModel и так далее?
Примечание: У меня есть отдельные таблицы в базе данных для учетных данных (email и pass) и для личной информации (возраст, dob, пол и т. Д.).
Ответ №1:
Вы можете просто использовать одного пользователя модели, который будет выполнять все общие свойства с этими 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.
Комментарии:
1. Итак, я помещу конкретную логику для каждого пользователя в их выделенные папки и помещу общие свойства в одно место?
2. Да, вы должны сохранить его таким простым, какой он есть. Используйте DotctorViewModel, если вам нужно только отобразить что-то конкретное для этой страницы, которая отличается от User или Admin. Но если 3 логики одинаковы, например (имя, фамилия и т. Д.), Вы можете использовать только одну UserViewModel и передать ее в view с дополнительным перечислением UserType для определения типа пользователя.
3. Вы не должны хранить один класс Doctor со свойством Name и один класс Username со свойством Name, это не имеет смысла. Используйте Doctor class только для добавления определенных свойств, тогда вы просто можете наследовать от пользовательского класса и расширять Doctor class, если это ваш случай.