raklos
raklos

Reputation: 28545

c# to json not rendering properly in view

Hi Im trying to send a string to a view that looks like json.

Im sending a list of places:

class Place 
        {
            public string title { get; set; }
            public string description { get; set; }
            public double latitude { get; set; }
            public double longitude { get; set; }
        }

List<Place> placeList = new List<Place>(); 
//add places to PlaceList

//Then i do this
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            string sJSON = oSerializer.Serialize(placeList);
            ViewBag.Places = sJSON;

In the view its rendering output like this though:

[{&quot;title&quot;:&quot;sdf sdfsd sdf sd f&quot;,&quot;description&quot;:&quot;sdf sdf sd fsd sd sdf sdf dssd sdf sd s&quot;,&quot;latitude&quot;:53.740259851464685,&quot;longitude&quot;:-2.4602634343627927},

How do i get it to render as normal json in the view? minus &quot;etc?

Upvotes: 11

Views: 6458

Answers (3)

stuartdotnet
stuartdotnet

Reputation: 3034

@Html.Raw(ViewBag.Places)

also works

Upvotes: 6

Keith
Keith

Reputation: 155632

In your comment below you say your view is using @ViewBag.Places

Are you using Razor? If so the @ syntax does the same thing as <%: - it encodes the content.

Use the IHtmlString interface to avoid it, so either:

ViewBag.Places = new HtmlString(sJSON);

Or

@HtmlString(ViewBag.Places)

Upvotes: 20

Baptiste Pernet
Baptiste Pernet

Reputation: 3384

did you try ?

string sJSON = HttpServerUtility.HmltDecode(oSerializer.Serialize(placeList));

Upvotes: 1

Related Questions