Динамический JavaScript в ASP.Net MVC 3.0 + Razor - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть JavaScript, который должен генерироваться во время выполнения. Текст сценария генерируется в классе контроллера:

private string mapString
{
    get
    {
       Locations loc = new Locations();
       string appPath = Request.ApplicationPath;
       loc.ReadXml(Path.Combine(Request.MapPath(appPath) + "\\App_Data", "Locations.xml"));
       StringBuilder sb = new StringBuilder();
       for (int i = 0; i < loc.Specfications.Count; i++)
       {
          sb.Append("var myLatLng" + i.ToString() + "= new google.maps.LatLng(" + loc.Specfications[i].Y.ToString() + "," +
          loc.Specfications[i].X.ToString() + ");");
          sb.Append(" var beachMarker" + i.ToString() + " = new google.maps.Marker({position: myLatLng" + i.ToString() + ",map: map,icon: image,title:'" + loc.Specfications[i].Title + "'});"); 

....

...

...

      ViewData["MapString"] = mapString;

Когда я использую его в теге script:

 <script type="text/javascript">

              function initialize() {
                 @Server.HtmlDecode(ViewData["MapString"].ToString())

              }

</script>

Он не возвращает истинный текст и повторяет что-то вроде этого:

contentString0 = '<ширина таблицы = "100%" style = "семейство шрифтов: tahoma; выравнивание текста: справа; шрифт </strong>

** обновление: сайт не отображал мой вопрос правильно, я хочу показать "'<", но он показывает "' <" </p>

но он должен вернуть: contentString0 = ' Вы видите, что он конвертирует "'<" в "' <". Но когда я использую: @ Server.HtmlDecode (ViewData ["MapString"]. ToString ()) из тега сценария, все в порядке. </p>

1 Ответ

1 голос
/ 27 ноября 2011

Возможно, вы захотите сделать это таким образом, который, я думаю, будет более гибким, чем генерация кода в вашем контроллере:

Действие контроллера:

    public JsonResult GetCoords()
    {
        // your code here - im putting a generic result you may 
        // need to put some logic here to retrieve your location / locations 

        var result = new { lon = "51.0000", lat = "23.0000" };
        return Json(result, JsonRequestBehavior.AllowGet);

    }

по вашему мнению добавить:

    <script type="text/javascript">
        $(document).ready(function () {

            $.getJSON('/YourController/GetCoords', function (jsonData) {

                var lon = jsonData.lon;
                var lat = jsonData.lat;

                yourGoogleMapFunction(lon, lat);

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