in asp mvc controller, created viewbag variable list of items loaded on page:
public actionresult items() { viewbag.itemlist = repo.getitems(); // returns list of items return view("items"); }
on page side, parsing data:
@{ newtonsoft.json.jsonserializersettings jsonsettings = new newtonsoft.json.jsonserializersettings { contractresolver = new newtonsoft.json.serialization.camelcasepropertynamescontractresolver() }; var jsondata = @html.raw(newtonsoft.json.jsonconvert.serializeobject(model, newtonsoft.json.formatting.indented, jsonsettings)); var serial = new system.web.script.serialization.javascriptserializer(); var items = serial.serialize(viewbag.itemlist); }
in knockout load function, parse list , remove newline characters break json.parse() function.
self.load = function () { var itemsescaped = '@html.raw(items.replace("'", "\\'"))'.replace("\n", "\\n"); var someitems = json.parse(itemsescaped); ko.mapping.fromjs(someitems, self.itemmapping, self.someitems); }
however, other special characters break json.parse() function. there way filter these out either on controller on js side?
instead of writing json directly page's html, pass response javascript request server.
if, however, write directly in cshtml, take @ post: how write unencoded json view using razor?, shows how print unencoded json page of special characters encoded not cause issues further parsing.
Comments
Post a Comment