希望我在标题中说对了。基本上,我有一个 MVC/Entity Framework 应用程序(代码优先),我可以清楚地看到已经发生了迭代(从脚手架提供)来编写任何标签、编辑器等。foreach 对象从用户动态创建应用程序(Create.cshtml)等
我现在需要的是不必为所有标签、editorfor 等指定每个属性名称。我需要让代码只查找对象的每个属性并显示除 ID 之外的所有内容。
我想这会很简单。但是,除了脚手架选项的惊人建筑师忽略了这种使用之外,我也没有弄清楚。如果可能的话,我希望使用实体框架(或者我猜查询将是 LINQ,对吗?),lambda 表达式,以其他漂亮代码的方式。
ps 我看到有一些问题在某种程度上与这个问题有关。但与我要求解决此问题的内容还不够接近..
基于视图的数量和没有答案,也许需要一个例子。下面是一个名为 Item 的类,它具有许多属性。每次管理员添加另一个项目时,都会创建一个新实例并设置这些属性。好吧,这很好,花花公子,我只是不想指定所有属性是什么。我想说的是,foreach(property in Item){Html.DisplayNameFor(Item.PropertyName)} 然后再说一次,在适当的情况下, foreach(property in 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>