更新:我使用Sitecore的7.0版Sitecore的玻璃映射器(V3)的Alexa排名查詢財產不被填充
我使用Glass.Mapper.Sc成功爲止。我有很多模型被成功映射。我現在只是嘗試了我的第一個查詢映射,並無法使其工作。
我有以下兩種模式
[SitecoreType(TemplateName = "Testimonial")]
public class Testimonial : ContentItem
{
[SitecoreField(FieldType = SitecoreFieldType.MultiLineText)]
public virtual string Summary { get; set; }
[SitecoreField(FieldType = SitecoreFieldType.RichText)]
public virtual string Testimony { get; set; }
[SitecoreField]
public virtual string Testifier { get; set; }
[SitecoreField(FieldType = SitecoreFieldType.GeneralLink)]
public virtual Link TestifierUrl { get; set; }
[SitecoreField]
public virtual string Company { get; set; }
}
和
[SitecoreType(TemplateName = "Testimonials")]
public class Testimonials : ContentFeatureItem
{
public Testimonials()
{
TestimonialList = new List<Testimonial>();
}
[SitecoreQuery("/sitecore/content//*[@@templatename='Testimonial']", IsRelative = true)]
public virtual IEnumerable<Testimonial> TestimonialList { get; set; }
}
據我應該預料到TestimonialList與見證項目的列表填充的教程。但是,列表總是空的。
我已經通過在sitecore的開發者工具中使用XPath構建器並通過Sitecore API的以下用法檢查了路徑是否有效。
var query = new Query("/sitecore/content//*[@@templateName='Testimonial']");
var returnVal = query.Execute();
其中returnVal填充了預期的項目。我也試過./*[@@templateName='Testimonial']
作爲映射屬性上的查詢。
我已經成功地手動檢索了一個特定的Testimonial實例來檢查它是不是一些奇怪的映射問題。
除了這個問題,一切似乎都正常與Glass.Mapping.Sc和我的模型正常工作。到目前爲止,我已經遵循glass.lu上的教程,並且我已經通過NuGet安裝了Glass.Mapping.Sc。
我已經看過github上的源代碼,但看不到任何可能導致我的問題。有沒有其他人有這個問題或成功地使用玻璃查詢填充參數?
UPDATE(繼邁克爾的答覆):
添加以下屬性設置爲推薦類
[SitecoreQuery("./*")]
public virtual IEnumerable<AbstractModel> Children { get; set; }
這回AbstractModel的那名是直接孩子6個見證項目的填充的IEnumerable見證項目。
我也試過
[SitecoreQuery("//*")]
public virtual IEnumerable<AbstractModel> Children { get; set; }
,得到了相同的結果。我不明白這一點,因爲我希望獲得更多的東西,而不僅僅是6條推薦。
我刪除了TestimonialList性能並增加了一個新的屬性,兒童,和這個屬性的作品完美
[SitecoreQuery("./*[@@templatename='Testimonial']", IsRelative = true)]
public virtual IEnumerable<Testimonial> Children { get; set; }
然後我用ReSharper的的屬性重命名爲TestimonialList,然後ZYX,然後Blerg。所有三次它沒有工作(沒有填充),但如果我重新命名爲兒童,一切都很好。奇怪。
更多更新 我已經找到了爲什麼查詢似乎工作時,屬性被命名爲「兒童」。它不起作用,這是我得到意想不到的結果。「兒童」是在所有兒童項目上填充的共同財產。因爲我所有的孩子都是褒獎,所以這可以正確填充。
所以,如果我改變我的財產,只是下面的它仍然是正確的填充
public virtual IEnumerable<Testimonial> Children { get; set; }
在Glass.Mapper.Sc.Integration.DataMappers.SitecoreChildrenMapperFixture.MapToProperty_ItemHasThreeChildren_ThreeObjectsAreCreated看。
對不起,我感到困惑。我首先嚐試了一個相對路徑「./*[@@templateName='Testimonial']」,正如我在帖子中的其他地方所說的那樣。我試圖用IsRelative設置爲true。完整的路徑被嘗試與IsRelative虛假和真實,都沒有工作。相對查詢也不起作用。我也嘗試過使用一個非常通用的類型和一個開放的Xpath查詢(例如「// *」),並返回我的基本模板類型,但也不起作用。 –