Removing a specific key of ModelState for a specific controller's method
While your approach might work, I consider it a hack. The preferred solution would be to create different models for each request so that the user does not have a chance of passing values that might not only not be required but even be forbidden.

Your new entities could be:

class NewUser
{
    public string Name { get; set; }
}


Where there are is no Id if the AIP does not require it.



It is a very bad idea to expose your database models to the caller. Create more specific models and map their properties to your database entities. 

If you let the user the possibility of passing anything he wants, you would need to validate even more values to be sure he does not try to do something else than you want him to.

One such example could be when you have an API for updating User.Name but that user has a navigation property Books and the caller sends you some books too that will also get updated... just because he can. This might cause you a lot of trouble.