The metadata attribute [: which seems ideal for Server/db Generated IDs etc as shown below.
This however has an odd little quick when a form is posted back to a controller.
The user.Id will always be 0 (the default for Int), This is directly linked to using the MetaData attribute
If you supply a ViewModel to a View and the submit a form in the View back to a controller (ie the parameter in the controller action is a viewmodel) the view will store the unused values from that model (not displayed or used on the view) back to the controller.
In my example below I submit a UserModel to the form and accept this back into Controller again. I don't display all the fields in this Model such as UserID, Password etc. But MVC is smart enough to retain these for later use, this is much better than ASP.NET, although passing very large models for a handful of fields could deter good performance.