Ejemplo n.º 1
0
        public IHtmlString Render(CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext)
        {
            var container = new TagBuilder("div");

            container.AddCssClass("custom-file");
            container.Attributes.Add("data-toggle", "fileupload");

            var textbox = new TagBuilder("input");

            textbox.Attributes.Add("type", "text");
            textbox.Attributes.Add("name", field.Name);
            textbox.MergeAttributes(field.GetUnobtrusiveValidationAtributes());

            RouteValueDictionary additionHtmlAttributes = null;

            if (htmlAttributes != null)
            {
                additionHtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);

                var databind = additionHtmlAttributes["data-bind"];
                if (databind != null)
                {
                    additionHtmlAttributes.Remove("data-bind");
                    textbox.MergeAttribute("data-bind", databind.ToString());
                }

                container.MergeAttributes(additionHtmlAttributes);
            }

            var button = new TagBuilder("a");

            button.AddCssClass("button");

            var span = new TagBuilder("span");

            var fileInput = new TagBuilder("input");

            fileInput.Attributes.Add("type", "file");
            fileInput.Attributes.Add("id", field.Name);
            fileInput.Attributes.Add("name", field.Name);

            span.InnerHtml   = fileInput.ToString(TagRenderMode.SelfClosing);
            button.InnerHtml = "Browse..." + span.ToString();

            container.InnerHtml = String.Concat(textbox.ToString(TagRenderMode.SelfClosing), button.ToString());

            return(new HtmlString(container.ToString()));
        }
Ejemplo n.º 2
0
        public virtual IHtmlString Render(CustomFieldDefinition fieldDefinition, string fieldValue, object htmlAttributes, ViewContext viewContext)
        {
            var builder = new TagBuilder(TagName);

            builder.MergeAttribute("name", fieldDefinition.Name);

            var validationAttributes = fieldDefinition.GetUnobtrusiveValidationAtributes();

            if (validationAttributes != null && validationAttributes.Count > 0)
            {
                builder.MergeAttributes(validationAttributes, true);
            }

            BuildControl(builder, fieldDefinition, fieldValue, htmlAttributes, viewContext);

            return(new HtmlString(builder.ToString(TagRenderMode)));
        }