Передать строку в формат JSON и ее автоматическое кодирование

#c# #asp.net-mvc #json #asp.net-mvc-4

#c# #asp.net-mvc #json #asp.net-mvc-4

Вопрос:

Я хочу передать строку json в функцию Javascript, а JSON сгенерировать динамически. но после передачи параметра JSON в функцию он кодируется в двойных кавычках с помощью «e;. Я использую C # MVC 4.0, вот мой код :-

 string strAllImages = "[";

foreach (var images in Model.PostsImageList)
{    
     if (strAllImages.Trim() != "[")
     {
         strAllImages = strAllImages   ",";
     }
     strAllImages = strAllImages   "'~/postImages/"   images.Image_Post_URL   "'";            

}   

strAllImages = strAllImages   "]";

<script language="javascript" type="text/javascript">

$(document).ready(function(){ // on document load

    $("#thumbsliderdiv").imageSlider({ //initialize slider
        'thumbs': @strAllImages, 
        'auto_scroll':true,
        'auto_scroll_speed':4500,
        'stop_after': 2, //stop after x cycles? Set to 0 to disable.
        'canvas_width':700,
        'canvas_height':500 // <-- No comma after last option
        })
});

</script>
  

Комментарии:

1. Для JSON требуются двойные кавычки. Вы должны использовать . ИСПОЛЬЗУЙТЕ библиотеку JSON для кодирования вашего массива вместо того, чтобы делать это самостоятельно.

Ответ №1:

Чего не хватает в вашем коде, чтобы заставить его немедленно работать, так это :

 'thumbs': @Html.Raw(strAllImages)
  

Но это будет более чистым, если вы используете JSON.net. Например :

 string [] strAllImagesAsArray = Model.PostsImageList.Select(i =>  "'~/postImages/"   i.Image_Post_URL   "'").ToArray() ; 
  

И в вашем javascript :

 <script language="javascript" type="text/javascript">

$(document).ready(function(){ // on document load

    $("#thumbsliderdiv").imageSlider({ //initialize slider
        'thumbs': @Html.Raw(JsonConvert.SerializeObject(strAllImagesAsArray)),
        'auto_scroll':true,
        'auto_scroll_speed':4500,
        'stop_after': 2, //stop after x cycles? Set to 0 to disable.
        'canvas_width':700,
        'canvas_height':500 // <-- No comma after last option
        })
});

</script>