希望我在标题中正确地讲了话。基本上,我有一个MVC /实体框架应用程序(代码优先),我可以清楚地看到,已经有迭代发生(从脚手架提供)来编写任何标签,编辑器等。应用程序(Create.cshtml)等迭代通过N模型实例的儿童数量 - 实体框架/ LINQ
我现在需要的是不必为所有标签,editorfor等指定每个属性名称。我需要代码只是寻找对象的每个属性和显示一切,但ID ..
我想这将是非常简单。但是,除了忽略脚手架选项的惊人建筑师的这种使用外,我还没有弄清楚。如果可能的话,我希望使用实体框架(或者我猜这个查询是LINQ,对不对?),lambda表达式,以其他漂亮代码的形式出现。
p.s.我发现那里有几个问题以某种方式与这个问题有关。但不够接近我要求解决这个问题..
根据视图的数量和没有答案,可能需要一个例子。下面是一个名为Item的类,它有许多属性。每次管理员添加另一个项目时,都会创建一个新实例并设置这些属性。嗯,这很好,很花哨,我只是不想指定什么所有的属性..我想说的东西,像foreach(Item中的属性){Html.DisplayNameFor(Item.PropertyName)},然后再次,在适当的情况下,foreach(Item中的属性){Html.EditorFor(Item.PropertyName)}这样一个标签和一个输入框将被创建,而不必指定:“Item.Name,Item.Category,Item.Price,Item .Blah”,然后,如果我添加更多的属性我不得不再次回到我的代码,并添加更多的东西......
所以,他这样说,这里是我的课:
public class Item
{
public int ID { get; set; }
[Required]
public string ItemName { get; set; }
[DataType(DataType.Date)]
public DateTime AvailableDate { get; set; }
[Required]
public string Category { get; set; }
[Range(1, 10000000)]
[DataType(DataType.Currency)]
public decimal Price { get; set; }
}
,现在这里的我需要动态的东西:
<table>
<tr>
<th>
@Html.DisplayNameFor(foreach(modelProperty in model.Properties)
{modelProperty.PropertyName}
</th>
<tr>
</table>
和
<table>
<tr>
<th>
@Html.DisplayFor(foreach(modelProperty in model.Properties)
{modelProperty.PropertyName}
</th>
</table>
不能使用'var'?它会给你一个错误?如果你发布了更多你试过的代码会更好。或者把它放在pastebin.com等东西上作进一步审查。 – Leniency 2013-05-09 14:36:11