/// <summary> /// Gets the object. /// </summary> /// <param name="model">The model.</param> /// <param name="db">The db.</param> /// <returns></returns> /// <exception cref="Glass.Mapper.MapperException">Failed to find context {0}.Formatted(ContextName)</exception> public object GetObject(string model, Database db, Rendering renderingItem) { if (model.IsNullOrEmpty()) return null; //must be a path to a Model item if (model.StartsWith("/sitecore")) { var target = db.GetItem(model); if (target == null) return null; string newModel = target[ModelTypeField]; return GetObject(newModel, db, renderingItem); } //if guid must be that to Model item Guid targetId; if (Guid.TryParse(model, out targetId)) { var target = db.GetItem(new ID(targetId)); if (target == null) return null; string newModel = target[ModelTypeField]; return GetObject(newModel, db, renderingItem); } var type = Type.GetType(model, false); if (type == null) return null; var context = Context.Contexts.ContainsKey(ContextName) ? Context.Contexts[ContextName] : null; if (context == null) throw new MapperException("Failed to find context {0}".Formatted(ContextName)); //this is really aggressive if (!context.TypeConfigurations.ContainsKey(type)) { //if the config is null then it is probably an ondemand mapping so we have to load the ondemand part IConfigurationLoader loader = new OnDemandLoader<SitecoreTypeConfiguration>(type); context.Load(loader); } ISitecoreContext scContext = new SitecoreContext(context); if (renderingItem.DataSource.IsNotNullOrEmpty()) { var item = scContext.Database.GetItem(renderingItem.DataSource); return scContext.CreateType(type, item, false, false, null); } return scContext.GetCurrentItem(type); }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event. /// </summary> /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnLoad(EventArgs e) { Model = SitecoreContext.CreateType <T>(LayoutItem, false, false); base.OnLoad(e); }
/// <summary> /// Gets the model. /// </summary> protected virtual void GetModel() { Model = SitecoreContext.CreateType <T>(LayoutItem, IsLazy, InferType); }
/// <summary> /// Gets the object. /// </summary> /// <param name="model">The model.</param> /// <param name="db">The db.</param> /// <returns></returns> /// <exception cref="Glass.Mapper.MapperException">Failed to find context {0}.Formatted(ContextName)</exception> public object GetObject(string model, Database db, Rendering renderingItem) { if (model.IsNullOrEmpty()) { return(null); } //must be a path to a Model item if (model.StartsWith("/sitecore")) { var target = db.GetItem(model); if (target == null) { return(null); } string newModel = target[ModelTypeField]; return(GetObject(newModel, db, renderingItem)); } //if guid must be that to Model item Guid targetId; if (Guid.TryParse(model, out targetId)) { var target = db.GetItem(new ID(targetId)); if (target == null) { return(null); } string newModel = target[ModelTypeField]; return(GetObject(newModel, db, renderingItem)); } var type = Type.GetType(model, false); if (type == null) { return(null); } var context = Context.Contexts.ContainsKey(ContextName) ? Context.Contexts[ContextName] : null; if (context == null) { throw new MapperException("Failed to find context {0}".Formatted(ContextName)); } //this is really aggressive if (!context.TypeConfigurations.ContainsKey(type)) { //if the config is null then it is probably an ondemand mapping so we have to load the ondemand part IConfigurationLoader loader = new OnDemandLoader <SitecoreTypeConfiguration>(type); context.Load(loader); } ISitecoreContext scContext = new SitecoreContext(context); if (renderingItem.DataSource.IsNotNullOrEmpty()) { var item = scContext.Database.GetItem(renderingItem.DataSource); return(scContext.CreateType(type, item, false, false, null)); } return(scContext.GetCurrentItem(type)); }