【问题标题】:Create Expression<Func<TModel, TValue>> using refelction使用反射创建 Expression<Func<TModel, TValue>>
【发布时间】:2011-01-17 21:51:12
【问题描述】:

我的 ASP.NET MVC 项目中有一些显示模板。现在我可以像这样使用它们:

@Model MyModel

@Html.DisplayFor(x => x.PropertyName)

我想做的只是循环遍历对象图并动态地执行此操作:

@Model MyModel

foreach(var property in MyModel.GetType().GetProperties()){
    @Html.DisplayFor(/*Any way to do this?*/)
}

有什么想法吗?

【问题讨论】:

  • 嗯...我有一个文本示例,但问题是 DisplayFor 方法也是通用的...这很棘手...
  • 它将沿线 var param = Expression.Parameter(MyModel.GetType()); foreach(var property in MyModel.GetType().GetProperties()) { @Html.DisplayFor(Expression.Lambda(Expression.Property( param, property), param)); } - 但中间有一些MakeGenericMethod。这种痛苦真的值得吗?
  • 没有。 :) 谢谢...如果我们有更多的显示模板要运行,但我宁愿手工做...记住 - 现在这会让我很烦...

标签: c# asp.net-mvc asp.net-mvc-2 reflection


【解决方案1】:

如果我没记错的话,这正是 DisplayForModel 所做的:

@Html.DisplayForModel(yourModel);

【讨论】:

  • 确实如此,但我发布的答案使其适用于复杂/嵌套类型:)
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
相关资源
最近更新 更多