c# - ModelState not validating nested models after editing in controller -
i have nested viewmodels these two:
public class firstviewmodel { public secondviewmodel secondviewmodel { get; set; } } public class secondviewmodel { [range(1, 12)] public int month { get; set; } }
if put month = 13;
, call modelstate.isvalid
(in controller) validation true
.
edit:
this controller:
public actionresult create() { return partialview(new firstviewmodel); } public httpstatuscoderesult create (firstviewmodel viewmodel){ viewmodel.secondviewmodel = new secondviewmodel(); viewmodel.secondviewmodel.month = 13; if (modelstate.isvalid) { return new httpstatuscoderesult(200); } else { return new httpstatuscoderesult(304); } }
i'm making abstraction of problem, aren't real variables.
your question states "call modelstate.validate" in controller. there no such method, assume mean if (modelstate.isvalid)
.
the first step in model binding process parameters of method initialized, in case new instance of firstviewmodel
. values of model set based on form data, route values, query string values etc. , validation errors associated properties of model added modelstate
.
subsequently modifying value of properties in model has no affect on modelstate
, if initial value of month
valid, modelstate.isvalid
return true irrespective of setting viewmodel.secondviewmodel.month = 13;
if want re-validate model, need use tryupdatemodel returns bool
indicating if update succeeded
public httpstatuscoderesult create (firstviewmodel viewmodel) { viewmodel.secondviewmodel = new secondviewmodel(); viewmodel.secondviewmodel.month = 13; if (tryupdatemodel(viewmodel) { return new httpstatuscoderesult(200); } else { return new httpstatuscoderesult(304); } }
Comments
Post a Comment