Hi Oniel,
Вы можете создать отдельные ViewModel для каждого типа пользователя и использовать аннотацию данных [ReadOnly].Но затем вы попадаете в области большого количества повторений.
Лично я бы порекомендовал вам создать собственную версию каждого типа данных и реализовать стандартную обработку на основе ролей, используя дополнительные аннотации данных метаданных для настройки.Хорошо, начнем с работы, но затем можно многократно использовать и легко переносить.
Пример:
[UIHint("MyCustomTemplateControl")]
[AdditionalMetadata("DenyEditUnlessInRole", "Admin")]
public string MyName { get; set; }
или:
[UIHint("MyCustomTemplateControl")]
[AdditionalMetadata("DenyEditIfInRole", "StandardUser")]
public string MyName { get; set; }
Вы можете выполнить кодпоиск на основе / базе данных в классе где-то еще, к которому ваши шаблоны типов данных запрашивают, чтобы принять решение о том, должен ли пользователь / роль получать права на чтение / редактирование этого свойства.
Имеет ли это смысл?
В качестве третьего варианта создайте шаблон редактора для всего объекта и включите в него только те поля и типы полей, которые вам интересны.
MVC настолько гибок - я полагаю, в конце концов, это зависит от того, как DRY делаютВы хотите сделать свой код.
Удачи!Dan.