//public static MvcHtmlString ThumbnailsFor<TModel, TItem>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, IEnumerable<TItem>>> expression) //{ // return htmlHelper.ThumbnailsFor<TModel, TItem>(expression, null); //} //public static MvcHtmlString ThumbnailsFor<TModel, TItem>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, IEnumerable<TItem>>> expression, string templateName) //{ // return htmlHelper.ThumbnailsFor<TModel, TItem>(expression, templateName, null); //} //public static MvcHtmlString ThumbnailsFor<TModel, TItem>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, IEnumerable<TItem>>> expression, // string templateName, object listAttributes) //{ // return htmlHelper.ThumbnailsFor<TModel, TItem>(expression, templateName, listAttributes, null); //} //public static MvcHtmlString ThumbnailsFor<TModel, TItem>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, IEnumerable<TItem>>> expression, // string templateName, object listAttributes, object listItemAttributes) //{ // return htmlHelper.ThumbnailsFor<TModel, TItem>(expression, templateName, listAttributes, listItemAttributes, -1, 0); //} //public static MvcHtmlString ThumbnailsFor<TModel, TItem>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, IEnumerable<TItem>>> expression, // string templateName, object listItemAttributes) //{ // var listHtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(new { @class = "span" }); // var listItemHtmlAttibutes = HtmlHelper.AnonymousObjectToHtmlAttributes(listItemAttributes); // return htmlHelper.ListForInternal_Normal(expression, templateName, listHtmlAttributes, listItemHtmlAttibutes, -1, 0); //} //public static MvcHtmlString ThumbnailsFor<TModel, TItem>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, IEnumerable<TItem>>> expression, // string templateName, object listAttributes, object listItemAttributes, int page, int pageSize) //{ // return htmlHelper.ThumbnailsFor(expression, templateName, null, listItemAttributes, page, pageSize); //} public static MvcHtmlString ThumbnailsFor <TModel, TItem>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, IEnumerable <TItem> > > expression, string templateName = null, ItemDrawingMode drawingMode = ItemDrawingMode.List, object listAttributes = null, object listItemAttributes = null, int page = -1, int pageSize = 0) { //if (listAttributes == null) listAttributes = new { @class = "thumbnails" }; //if (listItemAttributes == null) listItemAttributes = new { @class = "thumbnail-item" }; var listHtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(listAttributes); var listItemHtmlAttibutes = HtmlHelper.AnonymousObjectToHtmlAttributes(listItemAttributes); return(htmlHelper.ListForInternal(expression, templateName, listHtmlAttributes, listItemHtmlAttibutes, page, pageSize)); }
internal static MvcHtmlString ListForInternal <TModel, TItem>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, IEnumerable <TItem> > > expression, string templateName, IDictionary <string, object> htmlAttributes, IDictionary <string, object> itemHtmlAttributes, int page, int pageSize, ItemDrawingMode drawingMode = ItemDrawingMode.List) { var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); var listItems = expression.Compile().Invoke(htmlHelper.ViewData.Model) as IEnumerable <TItem>; // Paging items. if (page > -1 && pageSize > 0) { listItems = listItems.Paginate(page, pageSize); } // Get view name of template. templateName = templateName ?? metaData.TemplateHint; var templatePath = "ListItemTemplates/" + templateName; if (string.IsNullOrEmpty(templateName)) { templatePath = string.Format("ListItemTemplates/{0}View", metaData.PropertyName); } var listItemBuilder = new StringBuilder(); TagBuilder ulBuilder, liBuilder; if (drawingMode == ItemDrawingMode.List) { foreach (var item in listItems) { var innerHtml = htmlHelper.Partial(templatePath, item); if (innerHtml.ToString().Length > 0) { liBuilder = new TagBuilder("li") { InnerHtml = innerHtml.ToHtmlString() }; liBuilder.MergeAttributes(itemHtmlAttributes); listItemBuilder.AppendLine(liBuilder.ToString(TagRenderMode.Normal)); } } ulBuilder = new TagBuilder("ul") { InnerHtml = listItemBuilder.ToString() }; ulBuilder.MergeAttribute("name", metaData.PropertyName); ulBuilder.MergeAttribute("id", metaData.PropertyName); ulBuilder.MergeAttributes(htmlAttributes); } else { foreach (var item in listItems) { var innerHtml = htmlHelper.Partial(templatePath, item); if (innerHtml.ToString().Length > 0) { liBuilder = new TagBuilder("div") { InnerHtml = innerHtml.ToHtmlString() }; liBuilder.MergeAttributes(itemHtmlAttributes); listItemBuilder.AppendLine(liBuilder.ToString(TagRenderMode.Normal)); } } ulBuilder = new TagBuilder("div") { InnerHtml = listItemBuilder.ToString() }; ulBuilder.MergeAttribute("name", metaData.PropertyName); ulBuilder.MergeAttribute("id", metaData.PropertyName); ulBuilder.MergeAttributes(htmlAttributes); } return(MvcHtmlString.Create(ulBuilder.ToString(TagRenderMode.Normal))); }