根据模型中列表中的项目显示字段

时间:2013-03-04 17:10:16

标签: c# asp.net-mvc

在我的模型中,我实际上有一个来自另一个模型的项目列表。

我想为列表中每个项目的每个属性显示一个TextBoxFor(已禁用),有点像购物车盒。

这是我模特的一部分:

public class ObjOrderInfo
{
    (...)
    public List<ObjOrderDetailInfo> m_ListObjOrderDetail { get; set; }
}

这是我观点的一部分:

@using (Html.BeginForm())
{
    (...)
    @foreach (var item in Model.m_ListObjOrderDetail)
    {
        (insert code here)
    }
}

基本上我的其他对象(ObjOrderDetailInfo)具有数量,价格和其他对象等属性。我总是希望为每个属性显示textboxfor或displayfor。但是我怎么能知道我怎么能这样做......任何人都可以帮助我吗?

非常感谢!

3 个答案:

答案 0 :(得分:1)

@using (Html.BeginForm())
{
    (...)
    @for (var i = 0; i < Model.m_ListObjOrderDetail.Count; i++)
    {
        @Html.DisplayFor(x => x.m_ListObjOrderDetail[i].SomeProperty)

        @Html.TextBoxFor(x => x.m_ListObjOrderDetail[i].SomeOtherProperty)

        @Html.TextBoxFor(
            x => x.m_ListObjOrderDetail[i].YetAnotherProperty, 
            new { @readonly = "readonly" }
        )
    }
}

答案 1 :(得分:0)

这样简单应该有用:

@using (Html.BeginForm())
{
    <ul>
    @foreach (var item in Model.m_ListObjOrderDetail)
    {
        <li>@Html.DisplayFor(m => item)</li>
    }
    </ul>
}

答案 2 :(得分:0)

1)创建一个名为“ObjOrderDetailInfo.cshtml”的视图。此视图应针对ObjOrderDetailInfo进行强类型输入,并且您需要在视图中输入控件以编辑ObjOrderDetailInfo(如果需要,请使用“编辑”脚手架模板)。

2)将上面的视图放在Views / Shared / EditorTemplates文件夹中。

3)在View for ObjOrderInfo中,执行以下操作:

@Html.EditorFor(model => model.m_ListObjOrderDetail)