public static MvcHtmlString ImageUploaderFor <TModel, TValue>( this HtmlHelper <TModel> helper, Expression <Func <TModel, TValue> > expression, ImageUploaderOptions options = null, object htmlAttributes = null) { var html = new StringBuilder(); var metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData); var panelTag = new TagBuilder("div"); var panelBodyTag = new TagBuilder("div"); var imgTag = new TagBuilder("img"); var panelFooterTag = new TagBuilder("div"); var panelFooterHtml = new StringBuilder(); options = options ?? new ImageUploaderOptions(); panelTag.AddCssClass("upload-panel " + options.ContainerCssClass); panelTag.Attributes.Add("id", options.ContainerId ?? RandomHelper.RandomString(10)); panelTag.Attributes.Add("data-upload-link", options.UploadUrl); panelTag.Attributes.Add("data-min-width", options.MinWidth.ToString()); panelTag.Attributes.Add("data-max-width", options.MaxWidth.ToString()); panelTag.Attributes.Add("data-crop-width", options.CropWidth.ToString()); panelTag.Attributes.Add("data-min-height", options.MinHeight.ToString()); panelTag.Attributes.Add("data-max-height", options.MaxHeight.ToString()); panelTag.Attributes.Add("data-crop-height", options.CropHeight.ToString()); imgTag.AddCssClass("img-upload"); imgTag.Attributes.Add("style", "max-height:" + options.ContainerHeight + "px"); imgTag.Attributes.Add("src", metaData.Model != null ? (options.IsImageUploader ? metaData.Model.ToString() : options.UploadedFileImageSrc) : (options.IsImageUploader ? options.NoPicImageSrc : options.NoFileImageSrc)); imgTag.Attributes.Add("data-uploading-img", options.UploadingImageSrc); imgTag.Attributes.Add("data-nopic-img", options.IsImageUploader ? options.NoPicImageSrc : options.NoFileImageSrc); imgTag.Attributes.Add("data-original", metaData.Model != null ? ((options.CropWidth > 0 && options.CropHeight > 0) ? IoHelper.GetSubName(metaData.Model.ToString(), "_original") : metaData.Model.ToString()) : String.Empty); panelBodyTag.AddCssClass("upload-area rel" + (metaData.Model != null ? " uploaded" : null)); panelBodyTag.Attributes.Add("style", String.Format("height:{0}px;line-height:{0}px;", options.ContainerHeight)); panelBodyTag.InnerHtml = imgTag.ToString() + html .Append("<div class=\"upload-area-btns\">") .Append(options.AllowEdit ? ("<span style=\"display:" + (metaData.Model != null ? "inline-block" : "none") + "\" class=\"btn-edit\" title=\"Edit\"><span class=\"" + options.EditButtonCssClass + "\"></span>" + options.EditButtonText + "</span>") : null) .Append("<a href=\"" + metaData.Model + "\" target=\"_blank\" style=\"display:" + (metaData.Model != null ? "inline-block" : "none") + "\" class=\"btn-view\" title=\"").Append("View").Append("\"><span class=\"").Append(options.ViewButtonCssClass).Append("\"></span>").Append(options.ViewButtonText).Append("</a>") .Append("<span style=\"display:" + (metaData.Model != null ? "inline-block" : "none") + "\" class=\"btn-delete\" title=\"").Append("Delete").Append("\"><span class=\"").Append(options.DeleteButtonCssClass).Append("\"></span>").Append(options.DeleteButtonText).Append("</span>") .Append("</div>") .Append(options.AllowEdit ? "<div class='upload-remodal remodal-sm'></div>" : null).ToString(); panelFooterTag.AddCssClass("upload-controls"); panelFooterTag.InnerHtml = panelFooterHtml .Append("<div class=\"input-group\">") .Append(helper.TextBoxFor(expression, htmlAttributes).ToHtmlString()) .Append("<div class=\"input-group-btn\">") .Append("<span style=\"display:" + (metaData.Model != null ? "block" : "none") + "\" class=\"btn-delete\" title=\"").Append("Delete").Append("\"><span class=\"").Append(options.DeleteButtonCssClass).Append("\"></span>").Append(options.DeleteButtonText).Append("</span>") .Append("<button type=\"button\" class=\"btn btn-" + options.UploadButtonBsColor + " btn-upload\" title=\"").Append("Upload").Append("\"><span class=\"").Append(options.UploadButtonCssClass).Append("\"></span>").Append(options.UploadButtonText).Append("</button>") .Append("</div>") .Append("</div>").ToString(); panelTag.InnerHtml += panelBodyTag.ToString(); panelTag.InnerHtml += panelFooterTag.ToString(); return(MvcHtmlString.Create(panelTag.ToString())); }
public static MvcHtmlString SimpleUploaderFor <TModel, TValue>( this HtmlHelper <TModel> helper, Expression <Func <TModel, TValue> > expression, String title = null, ImageUploaderOptions options = null, object htmlAttributes = null, string helpText = null, string helpTextPosition = "right") { var controlHtml = helper.ImageUploaderFor(expression, options, htmlAttributes).ToHtmlString(); var control = WrapInFormGroup <TModel, TValue>(helper, expression, title, controlHtml, false, null, helpText, helpTextPosition); return(MvcHtmlString.Create(control)); }