3

I have the following in my MVC view:

 $(document).ready(ko.applyBindings(new ProfileVm(@Html.Raw(Json.Encode(Model)))));

This is working great, except all of the keys from Model are being encoded with uppercase first letters. How can I invoke the camelCase resolver from the view? Or is there a way to tell Json.Encode to use lowercase resolution?

RobVious
  • 12,685
  • 25
  • 99
  • 181

1 Answers1

11

You should use Newsoft JSON for this:

@{ var json = JsonConvert.SerializeObject(
            Model, 
            Formatting.None, 
            new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
   );

    $(document).ready(ko.applyBindings(new ProfileVm(@Html.Raw(Json.Encode(json)))));
}
Fals
  • 6,813
  • 4
  • 23
  • 43
  • It is good, but isn't completely correct answer. It is better to use `new ProfileVm(@Html.Raw(@json)))` and put the java script statement **outside** the razor one. – dyatchenko Aug 02 '15 at 14:50
  • For me this worked: var json = JSON.parse(@Html.Raw(Json.Encode(JsonConvert.SerializeObject( Model, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })))); – Joel Wiklund Sep 20 '19 at 15:21