我是ASP.NET MVC的新手并且具有以下情况。我需要一些帮助来创建正确的模型或视图。
我现在有以下型号。
public class ExtrasModel
{
public List<ExtraItem> ExtraItems { get; set; }
public DateTime FlightArrivalTime { get; set; }
public PickupInfoType PickupInfo {get; set; }
}
public class ExtraItem
{
public string ExtraInfo { get; set; }
public int ProdExtraId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public double Cost { get; set; }
public int CostType { get; set; }
public string Currency { get; set; }
public int Quantity { get; set; }
public double TotalCost { get; set; }
}
将从数据库中提取附加项列表。
这就是我的观点:
@foreach(var extra in Model.ExtrasList)
{
<tr>
<td>
//Not sure what code to put here
@Html.DropDownListFor(p => p.ExtrasList, new SelectList(listItems, "Value", "Text", extra.Quantity), new { id = extra.ProdExtraId })
</td>
<td>@extra.Name</td>
<td>@string.Format("{0} {1}", extra.Cost, extra.Currency)</td>
</tr>
}
现在如何让视图返回模型,其中包含为附加项选择的数量?
提前致谢!!
答案 0 :(得分:0)
为ExtraItem
模型创建 EditorTemplate 。
编辑器模板的内容与循环内容基本相同。
用以下语句替换循环:
@Html.EditorFor(x => x.ExtraItems)
这应该这样做。
答案 1 :(得分:0)
如果要将元素放在表单中,即将回发到服务器,则可以为您的类型创建自定义编辑器模板。如果你这样做,那么使用Html.EditorFor和你的可枚举。
在视图文件夹中创建一个EditorTemplates文件夹,然后添加一个新的强类型局部视图。将其命名为ExtraItem。将标记放在此视图中,以查找可枚举项中的每个项目。
使用时:
@Html.EditorFor(x=> x.ExtraItems)
您将获得如下输出:
<input id="ExtraItems_0__name" name="ExtraItems[0].name" type="hidden" value="aName">
注意数组样式名称。当表单被回发时,服务器将正确识别可枚举。