Objects in your domain often contain properties that define flags or bits like isAdmin, isDeleted, isAuthorized , or any other security information or sensitive information that you may not need the end user with, even if you only display it in state, skip the property name in the / html view, giving some "smart users" the opportunity to play with your POST actions, and if you do not take the right precautions, this can lead to security holes.
If you use the ViewModel, you are forced to reassign with the ViewModel <-> Model (Domain objects), in this redefinition you can make sure that the assignments are only those that you want from a specific user, for example:
if(CurrentUser.IsAdmin) {
source share