Шаблон MVC: лучший способ отобразить массив элементов - PullRequest
2 голосов
/ 15 июня 2011

Предположим, у меня есть этот div в секции view:

<div class='my class'>
    <%=myVariableToPrint %>
</div>

Там нет проблем: я просто беру из своего класса / bean (model) свои данные и помещаю их в div.

Теперь предположим, что myVariableToPrint - это массив из 10 строк, и мне нужно печатать div 10 раз, каждый div для каждой строки в массиве.Как я могу это сделать?

Поместите div на модель как:

myString+="<div class='my class'>"+myVariable[i]+"</div>" 

и напечатайте myString в секции view, это шумно:)

Любые решения?

Ps Я говорю о C # там, но должно быть то же самое на Java ecc

Ответы [ 3 ]

3 голосов
/ 15 июня 2011

Просто поместите <div> внутри цикла

<% foreach (var item in myArray) { %>
    <div class='my class'>
        <%= item %>
    </div>
<% } %> 

Обновление Хорошо, из ваших комментариев выглядит, что вы не хотите никакой логики цикла в своих представлениях.На самом деле вы не должны беспокоиться об этом.Виды содержат такие вещи. Это может выглядеть немного грязно, но это, как правило, правильный способ делать вещи.Внедрение html в вашу модель только для того, чтобы вы могли ее отобразить, определенно действительно плохая идея .Пожалуйста, не делайте этого.

Другим способом, которым вы могли бы сделать это, был бы пользовательский метод Html.Helper. Вы могли бы сделать что-то вроде ....

public static string DivList(this HtmlHelper helper, IList<string> list, string divClass)
{
    var sb = new StringBuilder();
    foreach(string item in list)
    {
        sb.AppendFormat("<div class=\"{0}\">{1}</div>", divClass, item); 
    }     
    return sb.ToString();
}

И выможно использовать это в представлении, как ...

<%= Html.DivList(Model.MyList, "myClass") %>

, что намного аккуратнее.

2 голосов
/ 15 июня 2011

Вы должны выполнить итерацию коллекции с помощью цикла foreach и поместить свой HTML в цикл.

Использование Razor (потому что это проще):

@foreach(string s in something {
    <div class="Something">@s</div>
}
1 голос
/ 15 июня 2011

Поместите коллекцию в модель.

Представление перебирает коллекцию для создания окончательного результата.

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