MVC3 Закрыть теги Dyanmically - PullRequest
0 голосов
/ 14 июля 2011

Я, вероятно, нарушаю какое-то соглашение здесь. У меня есть словарь от модели, число пар которой неизвестно. Я хочу отобразить все пары ключ / значение, но разбить отображаемые столбцы в количестве пяти. Я думал, что это будет работать:

<div class="substatus_group">
    <span class="title">Substatus</span>
    @{int i =0}         
    @foreach (var item in Model.substatus)
    {
        if(i > 1 && i % 5 == 0)
        {
            </div><div>
        }
        <span class="rtm_substatus">@item.Key: @item.Value</span>
        i++;
    }
</div>

Вместо этого, скобка на закрывающем элементе div говорит, что у него отсутствует начало, а цикл if говорит, что у него отсутствует закрывающая скобка. Страница никогда не отображается.

Очевидно, что Razer не интерпретирует код как написанный, а хочет пометить что-то как html / code, когда это не так. Я хотел бы знать, как заставить Razer сделать это правильно. Если существует лучшее решение для динамического создания тегов, это также будет хорошим ответом.

1 Ответ

0 голосов
/ 15 июля 2011

Как насчет этого? Используйте цикл for для управления индексом и проверяйте модуль для каждой итерации вместо пропуска первой.

Похоже, что MVC3 / Razor не нравится иметь начальные и конечные теги в разных областях.

Мне удалось решить эту проблему с помощью частичного представления и некоторого Linq, чтобы разделить словарь на разные «куски».

Ваш взгляд:

@{
    string[] keys = Model.Keys.ToArray();
    for (int i = 0; i < keys.Length; i += 5)
    {
        Html.RenderPartial("_partialView", Model.Skip(i).Take(5));
    }
}

Ваш частичный просмотр:

<div class="substatus_group">
    @foreach (KeyValuePair<string, string> item in Model)
    {
        <span class="title">Substatus</span> <span class="rtm_substatus">@item.Key: @item.Value</span>
    }
</div> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...