ASP.NET MVC4将列表<t>从视图返回到模型</t>

时间:2013-12-09 11:59:12

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我是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>
    }

现在如何让视图返回模型,其中包含为附加项选择的数量?

提前致谢!!

2 个答案:

答案 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">

注意数组样式名称。当表单被回发时,服务器将正确识别可枚举。