Suppose this view :
@Html.HiddenFor(model => model.Batiment.Client.Id)
@Html.LabelFor(model => model.Batiment.Code)</td>
@Html.EditorFor(model => model.Batiment.Code)</td>
<br>
@Html.LabelFor(model => model.Batiment.Nom)</td>
@Html.EditorFor(model => model.Batiment.Nom)</td>
When I submit my form on the controler the ModelState is invalid for the property “Nom” required into my class Client. Is true, the metadata in my class Client is set to required but I dont include this field into my view…! Why Mvc raise this error?
Can I hide a field (like Id) without specify all the required field into my view?
Errors enter model state during binding, therefore you could exclude your property from binding by including the following in your action method signature:
This should exclude PropertyName from binding, therefore error won’t enter your model state and your validation should succeed. Just to add, I think that this is more of a hack, rathern then solution. If you need only a part of your view model, than this view model should not be used and you should really consider creating a new view model without this property.
It might look very similar and it might seem like duplicate code, but it isn’t. It promotes seperation of concerns and you should see the benefit of doing this in the near future when it comes to extending/modifying your application.