지난 몇 주 동안 Sitecore를 가르치려고 노력했습니다.
현재 사용자가 검색 할 수있는 래서 피 목록을 만들려고합니다.Sitecore Lucene 검색 GlassMapper가 작동하지 않음
그러나 모든 레시피에는 성분이 들어 있는데, Lucene은이 성분들을 아이템 ID가 들어있는 문자열로 반환했습니다. GlassMapper를 사용하기 위해 재료 목록을 갖고 싶었습니다.
그래서 Lucene이 필드를 찾을 수 없도록 이름을 변경하여 Lucene에서 내 코드의 성분 목록을 제외 시켰습니다. 그런 다음 GlassMapper를 설정하여 성분 목록을 채 웁니다. 그러나 목록은 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 클래스 (I에만이 방법을 편집 한)
,511,358 난 내 검색을 분할하기로 결정 잠시 동안 재생 조금 더 매핑 후 03,210레시피 컨트롤러
[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