/// <summary> /// Renders both XPM Markup and Field Value for a multi-value field /// </summary> /// <typeparam name="TModel">Model type</typeparam> /// <typeparam name="TProp">Property type</typeparam> /// <typeparam name="TItem">Item type - this must match the generic type of the property type</typeparam> /// <param name="model">Model</param> /// <param name="propertyLambda">Lambda expression representing the property to render. This must be a direct property of the model.</param> /// <param name="item">The particular value of the multi-value field</param> /// <example> /// foreach (var content in model.Content) /// { /// @model.XpmEditableField(m => m.Content, content); /// } /// </example> /// <returns>XPM Markup and field value</returns> public static HtmlString XpmEditableField <TModel, TProp, TItem>(this TModel model, Expression <Func <TModel, TProp> > propertyLambda, TItem item) where TModel : IViewModel { var renderer = new XpmRenderer <TModel>(model, XpmMarkupService, resolver, reflectionHelper); return(renderer.XpmEditableField(propertyLambda, item)); }
/// <summary> /// Renders the XPM Markup for a Component Presentation /// </summary> /// <param name="model">Model</param> /// <param name="region">Region</param> /// <returns>XPM Markup</returns> public static HtmlString StartXpmEditingZone(this IViewModel model) { HtmlString result = null; if (model.ModelData is IComponentPresentation) { var renderer = new XpmRenderer <IViewModel>(model, XpmMarkupService, resolver, reflectionHelper); result = renderer.StartXpmEditingZone(); } return(result); }
/// <summary> /// Renders the XPM markup for a field /// </summary> /// <typeparam name="TModel">Model type</typeparam> /// <typeparam name="TProp">Property type</typeparam> /// <param name="model">Model</param> /// <param name="propertyLambda">Lambda expression representing the property to render. This must be a direct property of the model.</param> /// <param name="index">Optional index for a multi-value field</param> /// <returns>XPM Markup</returns> public static HtmlString XpmMarkupFor <TModel, TProp>(this TModel model, Expression <Func <TModel, TProp> > propertyLambda, int index = -1) where TModel : IViewModel { var renderer = new XpmRenderer <TModel>(model, XpmMarkupService, resolver, reflectionHelper); return(renderer.XpmMarkupFor(propertyLambda, index)); }