【发布时间】:2012-03-16 15:14:30
【问题描述】:
我知道以前有人问过这个问题,但我无法根据给出的答案获得正确的 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。我查看了 Phil Haack 的示例项目,但没有看到他是如何渲染参数名称的。
【问题讨论】:
-
您的视图的模型是如何定义的?
-
@jrummell - 我更新了我的问题。 SerialNumber 属性有点不同,因为它实际上基于类中的另一个属性。它基本上是作为一个友好的视图属性。
-
你能展示你的Action方法(至少是参数)吗?
-
@jrummell - 我什至还没有尝试将数据发布到我的操作,因为我想先解决标记。
-
@jrummell - 我还应该提到这个视图在页面上呈现为部分。因此
CustomerOrderItem的列表作为模型传递给局部视图。
标签: asp.net-mvc list asp.net-mvc-3 view binding