[英]ASP.NET MVC4 return list<T> from view back to model
我是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>
}
现在如何使视图返回带有额外选择数量的模型?
提前致谢!!
为ExtraItem
模型创建一个EditorTemplate 。 编辑器模板的内容与循环的内容基本相同。
用以下语句替换循环:
@Html.EditorFor(x => x.ExtraItems)
这应该做。
如果要将元素放入表单中,该表单将回发到服务器,则可以为类型创建自定义编辑器模板。 如果这样做,则将Html.EditorFor与您的枚举一起使用。
在视图文件夹中创建一个EditorTemplates文件夹,然后添加一个新的强类型部分视图。 将其命名为ExtraItem。 将此枚举中每个单独项目的标记放入此视图中。
使用时:
@Html.EditorFor(x=> x.ExtraItems)
您将获得如下输出:
<input id="ExtraItems_0__name" name="ExtraItems[0].name" type="hidden" value="aName">
注意数组样式名称。 将表格回发后,服务器将正确识别可枚举。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.