Публикация списка моделей представлений в модели в 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) {}
});