#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>