Публикация списка моделей представлений в модели в ASP.NET MVC 4

Поэтому я пытаюсь опубликовать представление с моделью, которая содержит список моделей, но при публикации только Id из первой модели в списке моделей показывает свой идентификатор. Я использую редактор для показа моих моделей через шаблон редактора. Обратите внимание, в шаблоне у меня есть hiddenFor для значения Id. Почему, когда я публикую форму, она показывает только первую модель в списке? Как это исправить, чтобы публикация содержала все значения Id в списке публикуемых моделей? Его можно как-то опубликовать для выпадающих значений.

Главный вид:

@using (Html.BeginForm("OrderPost", "Order", FormMethod.Post))
 {
            <table id="orders">
                    <thead>
                        <tr>
                            <th>
                            </th>
                            <th>
                                <b>ID</b>
                            </th>
                            <th>
                                <b>Product Name</b>
                            </th>
                            <th>
                                <b>SKU</b>
                            </th>
                            <th>
                                <b>Quantity</b>
                            </th>
                            <th>
                                <b>Price</b>
                            </th>
                            <th>
                                <b>Sub Total</b>
                            </th>
                        </tr>
                    </thead>
                    @Html.EditorFor(x => x.LineItemModels)

            </table>
            <button type="submit"> submit</button>
}

Шаблон редактора:

@model Project.Models.LineItemModel
@Html.HiddenFor(x => x.Id)
<tr>
    <td>
        @if (!Model.HideSelected) { 
            @Html.CheckBoxFor(x => x.Selected)
        }
        else
        {
            <span>Returned</span>
        }
    </td>
    <td>
        @Model.Id
    </td>
    <td>
        @Model.Name
    </td>
    <td>
        @Model.SKU
    </td>
    <td>
        @if (!Model.HideSelected) {
            @Html.DropDownListFor(x=>x.QuantitySelected, Model.QuantityToRefund)
        }
        else
        {
            <span>0</span>
        }
    </td>
    <td id="subTotal @Model.Id" class="subTotal"></td>
</tr>

Модель:

public class OrderModel
{
    public List<LineItemModel> LineItemModels { get; set; }
    public string Comments { get; set; }
    public int OrderId { get; set; }
}

! [введите описание изображения здесь] [1]

(попытался опубликовать изображение режима отладки Id, показывающего только в Model[0], но мне нужно повторение 10, я думаю...)

1 ответ

Я думаю, что вы можете использовать формат JSON (используя JSON.stringify()) для отправки данных на сервер, с помощью JQuery вы можете построить свой массив

var model = {};
model.field1 = $('#field1').val(); 
model.field2 = $('#field2').val();
model.field3 = ...

var _data = {};
_data.OrderId = 100;
_data.Comments = 'Some comments';
_data.LineItemModels = BuildArray(); //BuildArray return an array of model objects in your form that most have the LineItemModel structure


$.ajax({
   url: yourUrl,
   type: "POST",
   cache: false,
   data: JSON.stringify(_data),
   dataType: "json",
   contentType: 'application/json',
   success: function (data) {},
   error: function (request) {}
});
Другие вопросы по тегам