使用html帮助程序在asp.net mvc中显示导航属性的正确方法

时间:2016-04-02 03:41:23

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

我有这个课程:

public class Bar
{
    public string Name;
}

puclic class Foo
{
    public string Age {get;set;}
    public List<Bar> Bars {get;set;}
}

我想在Foo View中显示每个Bar的信息,例如:

@Html.EditorFor(model => Model.Bars.ElementAt(1).Bar.Name)

这是使用Razor / Html助手的正确方法吗?如果我更改Bars [1]的值然后发布到控制器,它将更新模型中的值?最后,我如何使用foo视图动态创建条形图并将它们分配给foo的条形码列表模型?

1 个答案:

答案 0 :(得分:1)

要显示所有Bar项(并且能够提交参数为Foo model的POST方法,那么您需要for循环

for(int i = 0; i < Model.Bars.Count; i++)
{
    @Html.TextBoxFor(m => m.Bars[i].Name)
}

或(更好),对EditorTemplate

类型使用Bar

/Views/Shared/EditorTemplates/Bar.cshtml

@Model.Bar
@Html.TextBoxFor(m => m.Name)

并在主视图中

@Html.EditorFor(m => m.Bars)

EditorFor()方法会为集合中的每个项目生成正确的html

要动态添加和删除Bar项,请参阅POST a form array without successfulSubmit same Partial View called multiple times data to controller?