私は過去数週間、Sitecoreを自分自身で教えようとしています。
現在、ユーザーが検索するためのレシピのリストを作成しようとしています。Sitecore Lucene検索GlassMapperが動作しない
しかし、すべてのレシピには成分が含まれていますが、Luceneはこれらの成分をアイテムIDを含む文字列として返しました。 GlassMapperにショットを与えたので、私のコードにList of Ingredientsを載せたいと思っていました。
私は、Luceneがフィールドを見つけることができないように名前を変更することで、自分のコードのIngredientリストをLuceneから除外しました。 次にGlassMapperを設定してIngredientリストに入力します。しかし、リストはnullのままです。
GlassMapperでこのリストを作成するにはどうすればよいですか?
マイコード:
レシピクラス
[SitecoreType(TemplateId= "{1CF86642-6EC5-4B26-B8A7-1B2EC41F7783}")]
public class Recipe : SearchResultItem
{
[SitecoreId]
public Guid Id { get { return base.ItemId.Guid; } }
public virtual string RecipeName { get; set; }
public virtual string BookName { get; set; }
public virtual IEnumerable<Ingredient> _Ingredients { get; set; }
public virtual int AmountOfPeople { get; set; }
}
成分クラス
[SitecoreType(TemplateId = "{730A0D54-A697-4DAA-908A-279CD24A9F41}")]
public class Ingredient : SearchResultItem
{
[SitecoreId]
Guid Id { get; }
[IndexField("Name")]
public virtual string IngredientName { get; set; }
}
GlassMapperScCustomクラス(私はこの方法だけを編集した)
私は私の検索を分割することを決めしばらく遊んともう少しをマッピングした後、レシピコントローラー
[HttpGet]
public ActionResult Index()
{
List<Recipe> recipes;
IQueryable<Recipe> query;
string index = string.Format("sitecore_{0}_index", Sitecore.Context.Database.Name);
var sitecoreService = new SitecoreService(Sitecore.Context.Database.Name);
string search = WebUtil.GetQueryString("search");
using (var context = ContentSearchManager.GetIndex(index).CreateSearchContext())
{
if (!string.IsNullOrEmpty(search))
{
query = context.GetQueryable<Recipe>().Where(p => p.Path.Contains("/sitecore/Content/Home/Recipes/")).Where(p => p.TemplateName == "Recipe").Where(p => p.RecipeName.Contains(search));
}
else
{
search = "";
query = context.GetQueryable<Recipe>().Where(p => p.Path.Contains("/sitecore/Content/Home/Recipes/")).Where(p => p.TemplateName == "Recipe");
}
recipes = query.ToList();
foreach(var r in recipes)
{
sitecoreService.Map(r);
Sitecore.Diagnostics.Log.Audit("SWELF" + r.RecipeName + "- " + r.BookName + " - " + r.AmountOfPeople + " - " + r.Name + "--" + r._Ingredients.Count(), this);
}
}
RecipesViewModel bvm = new RecipesViewModel() { Recipes = recipes, Search = search };
return View(bvm);
}
https://sitecore.stackexchange.com/で尋ねる価値がありますか? – DaveParsons