Я знаю, что этот вопрос задавался ранее, но мне не удалось получить правильный HTML-код на основе полученных ответов.
Похожие вопросы:
Вот как настроен мой код:
Модель
public class CustomerOrderItem {
public List<CustomerOrderItemSerialNumber> CustomerOrderItemSerialNumbers { get; set; }
public int Id { get; set; }
public string ShipperId { get; set; }
public string OrderLineNumber { get; set; }
public string LineNumber { get; set; }
/// <summary>
/// Return either an empty string (if no serial numbers already exist) or return the list of serial numbers separated by a line break for display in a textarea input.
/// </summary>
public string SerialNumber { get { return CustomerOrderItemSerialNumbers == null ? string.Empty : string.Join("\r\n", CustomerOrderItemSerialNumbers.Select(i => i.SerialNumber)); } }
}
Просмотр
<table id="orderItems" class="grid">
<thead>
<tr class="gridHeader">
<th class="lineNumber">Line #</th>
<th class="quantity">Quantity</th>
<th class="sku">SKU</th>
<th class="description">Description</th>
<th class="serialNumber">Serial Number(s)</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < Model.Count; i++) {
@Html.EditorFor(m => m[i])
}
</tbody>
</table>
Редактор
<tr class="gridrow">
<td class="lineNumber">@Model.LineNumber</td>
<td class="quantity">@Model.QuantityOrdered</td>
<td class="sku">@Model.SKU</td>
<td class="description">@Model.Description</td>
<td class="serialNumber">
@Html.TextAreaFor(m => m.SerialNumber)
</td>
</tr>
Эта настройка приводит к следующему HTML (размещена только соответствующая часть):
<td class="serialNumber">
<textarea cols="20" name="[0].SerialNumber" rows="2"></textarea>
</td>
Имя всегда отображается как [0] .SerialNumber, ноМне нужно orderItem [0] .SerialNumber.Я посмотрел на пример проекта Фила Хаака и не вижу, как он получает имя параметра.