【问题标题】:Correct approach to display navigation properties in asp.net mvc using html helpers使用 html 帮助器在 asp.net mvc 中显示导航属性的正确方法
【发布时间】:2016-04-02 03:41:23
【问题描述】:

我有这些课程:

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 Helpers 的正确方法吗?如果我更改 Bars[1] 的值,然后发布到控制器,它会更新模型中的值吗?最后,我如何使用 foo 视图动态创建 bar 并将它们分配给 foo 的 bar 列表模型?

【问题讨论】:

  • 需要@Html.EditorFor(m =&gt; m.Bars[0].Name)才能显示第一个,但是如果要显示集合中的所有项目,请使用for循环或EditorTemplate

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


【解决方案1】:

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

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

或者(更好),使用 EditorTemplate 来表示 typeof 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?

【讨论】:

  • 感谢您的宝贵时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 2011-04-06
  • 2013-07-27
相关资源
最近更新 更多