繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM