Создание формы из JSON - PullRequest
1 голос
/ 13 мая 2011

Я получаю массив моделей представления из моего контроллера, используя jquery + json. Затем я создаю форму, в которой каждая строка в таблице представляет одну модель представления.

У меня такой вопрос: как мне назвать каждый элемент формы, чтобы я мог передать его в действие моего контроллера следующим образом:

public ActionResult Update(MyViewModel[] models)
{
}

Edit: я использую jquery-tmpl для генерации формы, и я также пытаюсь выяснить, как получить переменную индекса в ней (если это необходимо для генерации формы).

1 Ответ

0 голосов
/ 13 мая 2011

Мне удалось заставить его работать.

Мой шаблон 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 указывает на текущий предмет.

...