【问题标题】:MVC3 Best Practise with Collections in Razor在 Razor 中使用集合的 MVC3 最佳实践
【发布时间】:2011-12-12 23:44:00
【问题描述】:

以前可能有人问过,但我找不到。

我只是想问问你们中那些比我有更多经验的人:

以 Razor 格式显示、编辑和添加新集合的最佳做法是什么?

为了详细说明我的意思 - 我主要是比较使用 EditorTemplate 来收集强类型对象以仅显示所述对象的某些属性,而不是在 Razor 代码中使用 foreach 循环本身,在视图上,并明确地详细说明那里的属性值。

示例:

编辑器模板:

<div>
    <div>
        @Html.LabelFor(x => x.Foo, "Foo")
    </div>
    <div >
        @Html.TextBoxFor(x => x.Fishfood, new { style = "width: 200px" })
    </div>
</div>

主视图:

<div>
     @Html.EditorFor(x => x.FooBarItems)
<div>

或者:

@foreach (var item in Model.Items)
{
    <div>
        @Html.Label("Foo", item.Foo)
    </div>
    <div >
        @Html.TextBox(item.Fishfood, new { style = "width: 200px" })
    </div>
}

它们在各方面几乎都相似,但我想知道我是否遗漏了什么!

谢谢

【问题讨论】:

    标签: c# razor


    【解决方案1】:

    第一个更好。我总是使用编辑器/显示模板。这允许我在多个位置重用模板。此外,在编辑器模板的情况下,它会生成输入字段的正确名称和 ID,而当您编写 foreach 循环时,情况并非如此。如果您想这样做内联,则必须使用带有索引的for 循环,但事情会变得很难看。

    因此,每当您需要在 ASP.NET MVC 应用程序中显示/编辑某个内容的集合时,请为此内容定义一个显示/编辑器模板,然后从集合属性的主视图中调用它。

    另一种说法如下:每次您在 Razor 视图中编写 foreachfor 循环时,都会响起警报,告诉您有更好的方法 :-)

    【讨论】:

    • 我自己一直在尝试。然而有很大的不同吗?我试图让我的老板相信这是在 Razor 中显示集合的方式,但我只是在阅读我读过的内容。我完全同意模板更有用,节省代码重复等。
    • @MattTolliday,是的,有一点不同:在编辑器模板的情况下,输入字段的名称将被正确生成,以便默认模型绑定器在 POST 操作中正确取回值。
    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2010-09-18
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多