【发布时间】:2014-09-02 14:40:32
【问题描述】:
我们将 Glass Mapper 与 Sitecore 结合使用,通过我们的模型,我们可以获取 sitecore 字段的值。但是我想通过使用模型轻松获取站点核心字段(站点核心字段类型),而不将任何字符串(使用GetProperty()时,您需要属性名称字符串)硬编码到方法中。
所以我写了这个东西来实现这一点,但是我不满意使用它时需要传入 2 种类型,因为当你有一个长模型标识符时它看起来很糟糕。
public static string SitecoreFieldName<T, TU>(Expression<Func<TU>> expr)
{
var body = ((MemberExpression)expr.Body);
var attribute = (typeof(T).GetProperty(body.Member.Name).GetCustomAttributes(typeof(SitecoreFieldAttribute), false)[0]) as SitecoreFieldAttribute;
return attribute.FieldName;
}
最理想的方式是能够像Model.SomeProperty.SitecoreField()这样得到它。但是我不知道如何从那里进行反射。因为这可以是任何类型的扩展。
谢谢!
【问题讨论】:
-
我知道我应该检查空数组。所以忽略这个。
-
那么你的问题是什么?对我来说看起来很简单和通用..
-
问题是进一步改进它。在这种情况下,您需要传入 2 种类型才能使其工作,当您在数据绑定上下文中使用它时,在 aspx 页面上看起来不太好。
标签: c# sitecore glass-mapper