Генерация JSON в ASP.NET MVC 3 - PullRequest
       2

Генерация JSON в ASP.NET MVC 3

0 голосов
/ 03 октября 2011

Ниже приведен пример кода из статьи, написанной Скоттом Митчеллом об использовании Google Maps с ASP.NET MVC:

@{

   var locations = new List<string>();
   var infoWindowContents = new List<string>();

   foreach (var store in Model) {

       locations.Add(string.Format(
         @"{{ 
               title: ""Store #{0}"", 
               position: new google.maps.LatLng({1}, {2})
         }}",
         store.StoreNumber,
         store.Latitude,
         store.Longitude));

      infoWindowContents.Add(string.Format(
         @"{{ 
            content: ""<div class=\""infoWindow\""><b>Store #{0}</b><br />{1}<br />{2}, {3} {4}</div>""
         }}",
         store.StoreNumber,
         store.Address,
         store.City,
         store.Region,
         store.PostalCode)
      );
   }
 }

Однако при отображении страницы отображается следующее (я добавилпробел между "&" и "quot;" *

{ 
    title: & quot;Store #893& quot;, 
    position: new google.maps.LatLng(32.7178080, -117.1611020)
}

Скорее всего, связан с кодировкой JSON, но я все еще новичок в ASP.NET MVC.

Ответы [ 3 ]

0 голосов
/ 10 апреля 2012

Вы должны попробовать обернуть JSON, который вы хотите вывести, в MvcHtmlString

0 голосов
/ 10 апреля 2012

При выводе местоположения не просто используйте переменную, но оберните ее в @Html.Raw(i).Таким образом, механизм рендеринга знает, что он не должен избегать потенциально опасных символов, таких как кавычки.В коде это должно выглядеть примерно так:

@for(var location in locations)
{
    Html.Raw(location);
}

Также посмотрите на JsonResult.Это гораздо проще и понятнее в использовании, чем создание собственных строк JSON.

0 голосов
/ 03 октября 2011

попробуйте использовать @: чтобы не выводить HTML-код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...