Если вы работаете в .NET 3.5 (и если вы используете MVC 2, у вас хорошие шансы), вы должны проверить новое пространство имен System.DirectoryServices.AccountManagement
, которое предоставляет вам множество сильных классов и типов .NET для многихобъекты каталогов, с которыми вы имеете дело на регулярной основе - не нужно заново изобретать колесо (еще раз!).
Ознакомьтесь с этой замечательной статьей в журнале MSDN о том, как использовать этот S.DS.Пространство имен AM:
Управление принципами безопасности каталогов в .NET Framework 3.5
Обновление: по причинам, которые я не совсем понимаю, простойПодход UserPrincipal
в качестве модели для представления ASP.NET MVC не работает - кажется, что ASP.NET MVC не может «найти» какие-либо свойства для этого объекта.
Так что подходдолжно быть что-то вроде этого:
- захватить ваш
UserPrincipal
(или DirectoryEntry
) из Active Directory - определить отдельный
ViewModel
- это просто класскоторый содержит свойства, такие как имя, фамилия и т. д. - вы можетелибо заполните этот класс ViewModel самостоятельно, либо вы можете получить некоторую помощь, например AutoMapper , чтобы упростить отображение из
UserPrincipal
(DirectoryEntry
) в ViewModel - , а затем отобразить (или отредактировать)Класс ViewModel в стандартном представлении ASP.NET MVC
- обрабатывает любые возможные обновления, передавая любые изменения обратно из ViewModel в «правильный» объект и сохраняя этот объект
Это немногоболее вовлеченным, чем мне бы хотелось, но я, честно говоря, не понимаю, как иначе вы можете сделать это иначе.