我們在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