Я удалил код, где вы проверяете лимит и он работает. Я думаю, что проблема у вас в том, что ваши теги закрыты не так, как ожидалось. Я столкнулся с подобной проблемой, пытаясь вложить некоторые данные, подобные этой. Я закончил тем, что изменил свою модель, чтобы приспособиться. Я обнаружил, что не могу условно закрыть теги, потому что движок Razor не может понять это во время проектирования.
<table>
@{var limit = @Model.limit;
var counter = 0;
}
<tr>
@foreach (var item in Model.data) {
@{counter++;}
<td>@Html.DisplayFor(modelItem => item.Name)</td>
<td>
<div id="Team-@item.Id-FilterRadio" class="TeamFilterRadio">
<input type="radio" id="Team-@item.Id-ON" name="Team-@item.Id" checked="checked"/><label for="Team-@item.Id-ON"">ON</label>
<input type="radio" id="Team-@item.Id-OFF" name="Team-@item.Id" /><label for="Team-@item.Id-OFF"">OFF</label>
</div>
</td>
}
</tr>
</table>
Вы могли бы сделать что-то вроде этого. Я создал класс TestData со свойствами, которые вы используете, и мое свойство Data моей модели относится к общему типу списка TestData. Я протестировал, используя 13 предметов, а также 2 и 3 столбца, и это сработало как шарм.
@{int i = 0;
var item = new MVC3TestSite.Models.TestData();
}
<table>
@while(i < Model.Data.Count){
<tr>
@for(var j = 1; j <= Model.Limit; j++){
item = Model.Data[i];
<td>@item.Name</td>
<td>
<div id="Team-@item.Id-FilterRadio" class="TeamFilterRadio">
<input type="radio" id="Team-@item.Id-ON" name="Team-@item.Id" checked="checked"/><label for="Team-@item.Id-ON"">ON</label>
<input type="radio" id="Team-@item.Id-OFF" name="Team-@item.Id" /><label for="Team-@item.Id-OFF"">OFF</label>
</div>
</td>
if (++i == Model.Data.Count) { break; }
}
</tr>
}
</table>