Мне удалось заставить его работать.
Мой шаблон jquery:
<script id="wagonTemplate" type="text/x-jquery-tmpl">
<tr>
<td>
<input type="checkbox" value="true" class="wagoncheck" name="wagons[${$item.getIndex()}].IsSelected" />
</td>
<td>
<input type="text" name="wagons[${$item.getIndex()}].WagonId" value="${WagonId}" style="width:120px" />
</td>
<td>
<input type="text" name="wagons[${$item.getIndex()}].WagonNumber" value="${WagonNumber}" style="width:20px" />
</td>
</script>
Метод загрузки шаблона:
function loadWagons(trainId, partId) {
$.getJSON('/train/wagons/' + escape(trainId) + '?partNo=' + partId, function (data) {
$wagons = $('#wagons tbody');
$wagons.empty();
// the function used in the template to get an index.
var tmplOptions = {
getIndex: function getIndex() {
return $.inArray(this.data, data);
}
};
$("#wagonTemplate").tmpl(data, tmplOptions).appendTo($wagons);
});
}
Другими словами:
Чтобы получить аргумент YourModel[] items
в вашем действии контроллера, вам нужно назвать элементы, так как items[0].MyProperty' where
0` должно соответствовать индексу в массиве.
Чтобы получить индекс в шаблоне jquery, просто передайте метод в настройках функции шаблона. Я использую слегка модифицированную версию ответа здесь . Передача предмета, как в этом ответе, не обязательна, так как this
указывает на текущий предмет.