Exemplo n.º 1
0
        //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));
        }
Exemplo n.º 2
0
        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)));
        }