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

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

我有这个类(class):

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] 的值然后发布到 controller 它将更新模型中的值?最后,我如何使用 foo View 创建动态条并将它们分配给 foo 的条列表模型?

最佳答案

要显示所有 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?

关于c# - 使用 html 帮助程序在 asp.net mvc 中显示导航属性的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368911/

相关文章:

asp.net - 如何将一个域映射到另一个域的子文件夹?

c# - 为什么我不能使用 StateServer 在 2 个 Web 应用程序之间共享 session 状态?我错过了什么?

c# - 从 @html.DropDownList 返回 int 值

c# - 处理无效的 XML 十六进制字符

c# - 是否可以在 css 中使用 c# 变量

c# - 通用列表中的数组

c# - WebAPI PushStreamContent 远程主机关闭连接

asp.net - 更改标题名称

c# - WCF,无法找到 ServiceHost 指令中的服务属性值

c# - 比较两个文件是否相等的断言语句