I am reading an enum value from the db then bind it to the model. When i post the form with ajax, somehow the enum is unbound or the model property in null or zero but it display properly on the view. I have posted code below. Im using entityframework and mvc3
//model code constructor
public CarModel(Car car)
{
State=(CarState)car.State;
//car.State comes in as an int
//etc setting other variables
}
//CarState property
public CarState {get;set;}
//model code
@Html.DisplayFor(m=>m.CarState)
//Controller code()
Save(CarModel car)
{
//I have code that saves the changes
}
The minute i get to “car”, CarState has no value.
It’s not quite clear how you are passing this value to the controller action. You have only shown some
@Html.DisplayFor(m=>m.CarState)but obviously this only displays a label in the view. It doesn’t send anything back to the server. If you want to send some value back you will have to use an input field inside the form.For example:
or use a
HiddenForfield if you don’t want the user to edit it.In any case you need to send that value to the server if you expect the model binder to be able to retrieve it. The model binder is not a magician. He cannot invent values. He binds values to your model from the Request.