2012-01-09 68 views
2

什么是最干净的,大多数ASP.NET MVC3方式,由于缺乏更好的术语,无法为有限数量的集合建模并显示Web表单剃刀?ASP.NET MVC3 EditorFor用于具有固定长度数组的模型的表单

我知道我可以在模型中抛出一个List并在视图中遍历它,但那不会以任何方式自动告诉EditorFor呈现有限数量的文本框或任何它是我想要的。

是否有更多的自动方法来建立一个视图模型,与剃刀视图一起工作,以确切地告诉我在我的集​​合中有多少物品,因此它可以自动渲染正确数量的表单元素?

+0

你不喜欢'foreach'语法吗? – Rondel 2012-01-09 16:25:16

+0

我喜欢它,如果没有更好的方法,那就是我将要使用的。我的问题是,使用EditorFor,有没有更多的自动方式来连接模型的属性是一个固定长度的数组或有限数量的集合,使得视图会自动显示正确数量的表单元素。所以在我的情况下,我需要准确地通过5个文本框收集5个薪水...... – tnktnk 2012-01-09 16:27:52

回答

1

如果我们谈论的是少量的简单数据类型,那么事实上(尽管不是最想听到的答案)是您应该在模型中为项目的每个实例都有单个字段。因此,对于5个工资,您的模型中应该有salary1,salary2等。

如果你想抽象一点 - 以及使它更难以改变/处理更大的数字等,你可以附加一些自定义元数据到字段,指出你想要的值的数量。然后,您需要帮助程序或自定义模板(或组合)来获取元数据并呈现正确数量的输入字段(使用正确的名称,ID等)。

+0

这就是我最初做的,薪水1,薪水2等,但它只是感觉笨重的不是吗?每个人都需要完全相同的验证逻辑,而且我需要将他们验证为值集合,也就是说,您必须输入全部五个值。随着所有其他尝试将模型绑定自动化到一个视图,我很惊讶这种情况被忽略... – tnktnk 2012-01-09 16:38:33

1

使用列表作为视图的模型是推荐的方法。它简单,干净,高效。

您可以创建EditorFor呈现列表的模板,但它们基本上与视图相同,并且由于模板系统而增加了一些开销。

+0

在您的观点中,将List计数限制为有限数量的项目的最佳方法是什么? – tnktnk 2012-01-09 16:32:16

+0

我不确定我了解你的问题。你想从控制器传递的34个元素中的10个元素或类似的东西? – linkerro 2012-01-10 08:01:12

1

我真的不明白你的问题是什么。为什么你需要限制它?你只需在列表中放入很多记录,这就是它会渲染多少个记录。如果您只需要列表中的5条记录,您是否会尽力确保列表只包含5个元素?不,你的观点同样如此。

+0

问题是,是否有更多的自动化方法来建模和连线。我不会告诉那些为我的应用程序编写规格的人,因为没有理由将其数量限制为五个。有一个很好的理由。你不知道这个Web表单的目的是什么,你不需要知道。如果答案是没有更多的自动化方式,那很好,说,我会接受它。 – tnktnk 2012-01-09 16:45:15