Использование Jquery в Razor View

Я застрял в проблеме, где мне нужно вставить переменную jquery в Razor View. Например, у меня есть следующий код:

$(document).ready(function () {
        var options = {
            pages: @Html.Raw(Json.Encode(ViewBag.Array)) ,
            singlePageMode: true
        };
        $("#pdfbox").flipBook(options);
    }) 

который дает вывод:

$(document).ready(function () {
        var options = {
            pages: ["http://localhost:651684/Document/GetPage?PageID=71184505-1.png","http://localhost:65184/Document/GetPage?PageID=71184505-2.png"] ,
            singlePageMode: true
        };
        $("#pdfbox").flipBook(options);
    }) 

Чтобы это работало, мне нужно было бы добавить '{src:}' в массив страниц вроде этого:

pages:[
{src:"http://localhost:651684/Document/GetPage?PageID=71184505-1.png"},        
{src:"http://localhost:651684/Document/GetPage?PageID=71184505-1.png"}
]

Но я не могу этого сделать. Есть ли способ вставить jquery в @Html.Raw(Json.Encode(ViewBag.Array)). Пожалуйста, нужна помощь.

Благодарю.

2 ответа

Решение

Использование Array#map() вернуть массив объектов, необходимых

    var options = {
        pages: @Html.Raw(Json.Encode(ViewBag.Array)) ,
        singlePageMode: true
    };

    options.pages = options.pages.map(function(url){
       return { src: url };
    });

    $("#pdfbox").flipBook(options);

Вот решение в одну строку

$(document).ready(function () {
    var options = {
        pages: @Html.Raw(Json.Encode(ViewBag.Array) + ".map((u)=>{return {src: u };})") ,
        singlePageMode: true
    };
    $("#pdfbox").flipBook(options);
}) 

Это превращается в

$(document).ready(function () {
    var options = {
        pages: ["http://www.google.com","http://www.stackru.com"].map((u)=>{return {src: u };}) ,
        singlePageMode: true
    };
    $("#pdfbox").flipBook(options);
}) 
Другие вопросы по тегам