我们在Sitecore中使用Glass Mapper,通过我们的模型我们可以获得sitecore字段的值。但是我想通过使用该模型轻松获取sitecore字段(sitecore字段类型),而不用硬编码任何字符串(当使用GetProperty()
时,您需要属性名称字符串)到方法中。如何从glassmapper映射的对象属性获取sitecore字段?
所以我写了这个东西来实现这个,但是我不满意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()
。但我无法弄清楚如何从那里做出反应。因为这可能是任何类型的扩展。
谢谢!
我知道我应该检查空数组。所以忽略这个。 – zhankezk 2014-09-02 14:41:30
那么你的问题是什么?看起来很简单,而且对我来说是通用的。 – 2014-09-03 07:27:14
问题是要改进它。在这种情况下,您需要传入两种类型才能使其工作,而在数据绑定上下文中使用它时,它在aspx页上看起来不太好。 – zhankezk 2014-09-03 10:08:32