$ .each (someData.split (',') => возвращает объединенную строку вместо массива элементов - PullRequest
6 голосов
/ 31 декабря 2010

Я использую asp.net mvc - ajax с jQuery ... У меня есть тип модели с именем " Книги ", который содержит свойство " TableOfContents " это свойство содержит данные в следующем формате:

TableOfContents = "1,2,4,6,9,17,28";

Метод действия Json, который возвращает объект Book следующим образом:

public JsonResult GetBook(int id) {
    return Json(_bookRepository.Current(id), .....AllowGet);
}

Следуя стилю списка изображений, которые я хочу отобразить.

alt text

В C # (Razor) я могу сделать это,

var splitted = Model.TableOfContents.Split(‘,’);
@foreach(var number in splitted) {
     <li><img src=”@Url.Content(“~/Content/Images/img-“ + number + “.gif”)” /> </li>
}

Этот код работает на 100% и показывает изображения, как показано на рисунке выше.

То же самое я хочу сделать с jQuery, потому что я использую ASP.NET MVC Ajax с jQuery. Вот сценарий jQuery, через который я получаю данные из MVC через jQuery.

<script type="text/javascript">          
        function GetBook(id) {
            var url = '@Url.Content("~//Monthly/CurrentBook?id=")' + id;

            $.post(url,
            null,
            function (book) {
                $('#bookResult' + book.ID).html(
                '<a href="@Url.Content("~/BookDetails/")' + book.ID + '">Click to View Details</a>'
                + '<div><p style=" text-align:center;">'
                + '<a href="' + monthly.URL + '"><button style="background-image:url(@Url.Content("~/Content/Images/download-pdf.gif")); width:200px; height:70px;" /></a>'

+ '**<!-- Here I want to use jQuery Code for displaying Table of content Images -->**'

                + '</p></div>');                
            },
           'json'
       );
        }

</script>

Я использовал код jQuery так:

$.each(book.TableOfContents.split(','), function(number) {
  + '<li><img src="img-' + number + '.gif" /></li>'
}

Но он отображает результат в виде: "1,2,3,17,90" (в строковом формате вместо отображения изображений)

В ASP.NET MVC Razor я могу отобразить список изображений следующим образом:

  var splitted = Model.TableOfContents.Split(‘,’);
        @foreach(var number in splitted) {
             <li><img src=”@Url.Content(“~/Content/Images/img-“ + number + “.gif”)” /> </li>
        }

http://alhadith.cz.cc (главная страница этого веб-сайта отображает список изображений с помощью ASP.NET MVC Razor)

1 Ответ

13 голосов
/ 31 декабря 2010

Если у вас есть

var book={TableOfContents:"1,2,4,6,9,17,28"};

как ваш объект с данными, затем в <head> добавьте:

$(function(){

    $('#list').empty();
    var TableOfContentsSplit=book.TableOfContents.split(',');
    $.each(TableOfContentsSplit,function(number){
          $('#list').append('<li><img src="img-'+TableOfContentsSplit[number]+'.gif" /></li>\n');
    });

});

и в <body> добавить:

<ul id="list"></ul>

В конце вы получите:

<ul id="list">
<li><img src="img-1.gif"></li>
<li><img src="img-2.gif"></li>
<li><img src="img-4.gif"></li>
<li><img src="img-6.gif"></li>
<li><img src="img-9.gif"></li>
<li><img src="img-17.gif"></li>
<li><img src="img-28.gif"></li>
</ul>

Приветствие G.

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