In my MVC3 application, I have a view model that I Json encode so I can manipulate it in JavaScript.
So let’s say I have the following code:
var model=@Html.Raw(Json.Encode(Model));
Currently, model.Name has value “Name”.
What I want to do now is create another JavaScript object “obj” that has a field called “Value”. When you change obj.Value, it also changes model.Name.
So I want something like:
var obj=new Object();
obj.Value=model.Name;
So right now, if I change the value of obj.Value, it doesn’t also change model.Name. I want that to happen and I’m not sure how I can do it in JavaScript. How do I do implement that?
Why don’t just just put the name in a hidden input field. Change the value with whatever JavaScript you choose in the usual way. Then when the form is posted back you can bind to the name value in the controller action, and set the Model name server-side.
What you are attempting is unnecessarily complicated.
If you really wanted to make it work – then on submit put the entire JSON string in a hidden input field. Then again in the controller action bind to the JSON as a string and deserialize it server-side to reconstruct your Model.