예제 #1
0
        public static MvcHtmlString LayTable <TModel>(this HtmlHelper htmlHelper, TModel model) where TModel : LayTable
        {
            //< table id = "demo" lay - filter = "test" ></ table >
            TagBuilder tagBuilder = new TagBuilder("table");

            tagBuilder.MergeAttribute("id", model.ControlId);
            tagBuilder.MergeAttribute("layui", "");
            var mainOption = LayHtmlHelper.GetAttributtes(model);
            List <IDictionary <string, object> > arr = new List <IDictionary <string, object> >();

            foreach (var item in model.GetType().GetProperties())
            {
                var attr = LayHtmlHelper.GetPropertyAttributte <LayColumnAttribute>(item);

                if (attr != null)
                {
                    if (attr.Field == null)
                    {
                        attr.Field = item.Name;
                    }
                    arr.Add(LayHtmlHelper.GetAttributtes(attr));
                }
            }
            mainOption.Add("cols", new object[] { arr });
            tagBuilder.MergeAttribute("lay-options", JsonHelper.Instance.Serialize(mainOption));
            return(new MvcHtmlString(tagBuilder.ToString()));
        }
예제 #2
0
        /// <summary>
        /// 返回一个 HTML label 元素以及由指定表达式表示的属性的属性名称
        /// </summary>
        /// <typeparam name="TModel"> 模型的类型。</typeparam>
        /// <typeparam name="TValue"> 值的类型。</typeparam>
        /// <param name="html">此方法扩展的 HTML 帮助器实例。</param>
        /// <param name="expression">一个表达式,用于标识要显示的属性。</param>
        /// <param name="labelText">  要显示的标签文本。</param>
        /// <param name="htmlAttributes"> 一个对象,其中包含要为该元素设置的 HTML 特性。</param>
        /// <returns> 一个 HTML label 元素以及由表达式表示的属性的属性名称。</returns>
        public static MvcHtmlString LayLabelFor <TModel, TValue>(this HtmlHelper <TModel> html, Expression <Func <TModel, TValue> > expression, string labelText, object htmlAttributes)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr, htmlAttributes);

            return(html.LabelFor(expression, labelText, attrs));
        }
예제 #3
0
        /// <summary>
        /// 返回一个 HTML label 元素以及由指定表达式表示的属性的属性名称
        /// </summary>
        /// <typeparam name="TModel"> 模型的类型。</typeparam>
        /// <typeparam name="TValue"> 值的类型。</typeparam>
        /// <param name="html">此方法扩展的 HTML 帮助器实例。</param>
        /// <param name="expression">一个表达式,用于标识要显示的属性。</param>
        /// <returns> 一个 HTML label 元素以及由表达式表示的属性的属性名称。</returns>
        public static MvcHtmlString LayLabelFor <TModel, TValue>(this HtmlHelper <TModel> html, Expression <Func <TModel, TValue> > expression)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr);

            return(html.LabelFor(expression, attrs));
        }
예제 #4
0
        /// <summary>
        /// 返回一个 HTML label 元素以及由指定表达式表示的属性的属性名称
        /// </summary>
        /// <param name="html">此方法扩展的 HTML 帮助器实例。</param>
        /// <param name="expression">一个表达式,用于标识要显示的属性。</param>
        /// <param name="labelText">  要显示的标签文本。</param>
        /// <param name="htmlAttributes"> 一个对象,其中包含要为该元素设置的 HTML 特性。</param>
        /// <returns> 一个 HTML label 元素以及由表达式表示的属性的属性名称。</returns>
        public static MvcHtmlString LayLabel(this HtmlHelper html, string expression, string labelText, IDictionary <string, object> htmlAttributes)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr, htmlAttributes);

            return(html.Label(expression, labelText, attrs));
        }
예제 #5
0
        /// <summary>
        /// 返回一个 HTML label 元素以及由指定表达式表示的属性的属性名称
        /// </summary>
        /// <param name="html">此方法扩展的 HTML 帮助器实例。</param>
        /// <param name="expression">一个表达式,用于标识要显示的属性。</param>
        /// <param name="htmlAttributes"> 一个对象,其中包含要为该元素设置的 HTML 特性。</param>
        /// <returns> 一个 HTML label 元素以及由表达式表示的属性的属性名称。</returns>
        public static MvcHtmlString LayLabel(this HtmlHelper html, string expression, object htmlAttributes)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr, htmlAttributes);

            return(html.Label(expression, attrs));
        }
예제 #6
0
        /// <summary>
        /// 返回一个 HTML label 元素以及由指定表达式表示的属性的属性名称
        /// </summary>
        /// <param name="html">此方法扩展的 HTML 帮助器实例。</param>
        /// <param name="expression">一个表达式,用于标识要显示的属性。</param>
        /// <param name="labelText">  要显示的标签文本。</param>
        /// <returns> 一个 HTML label 元素以及由表达式表示的属性的属性名称。</returns>
        public static MvcHtmlString LayLabel(this HtmlHelper html, string expression, string labelText)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr);

            return(html.Label(expression, labelText, attrs));
        }
예제 #7
0
        /// <summary>
        /// 一个控件
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="expression"></param>
        /// <param name="attrs"></param>
        /// <returns></returns>
        public static MvcHtmlString LayInputFor <TModel, TResult>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TResult> > expression, object attrs = null) where TModel : new()
        {
            var model = htmlHelper.ViewData.Model == null ? new TModel() : htmlHelper.ViewData.Model;

            var value   = model == null ? default(TResult) : expression.Compile()(model);
            var member  = expression.Body as MemberExpression;
            var proname = "";

            if (member != null)
            {
                proname = member.Member.Name;
            }
            else
            {
                throw new ArgumentException(
                          "'" + expression + "': is not a valid expression for this method");
            }
            //字段类型
            var propInfo   = model.GetType().GetProperty(proname);
            var inputModel = LayHtmlHelper.GetPropertyAttributte <InputAttribute>(propInfo) ?? new InputAttribute();
            var des        = LayHtmlHelper.GetPropertyAttributte <DescriptionAttribute>(propInfo);
            var attrDic    = LayHtmlHelper.GetAttributtes(inputModel);

            if (attrs != null)
            {
                attrDic.Merge(attrs.ToDictionary(), true);
            }
            //判断是否有name属性
            if (!attrDic.ContainsKey("name"))
            {
                attrDic.Add("name", proname);
            }
            //id 属性
            if (!attrDic.ContainsKey("id"))
            {
                attrDic.Add("id", proname);
            }
            //LayFilter
            if (!attrDic.ContainsKey("LayFilter"))
            {
                attrDic.Add("LayFilter", proname);
            }

            TagBuilder tagBuilder = new TagBuilder("input");

            tagBuilder.MergeAttributes(attrDic);
            var mainHtml = new TagBuilder("div");

            mainHtml.AddCssClass("layui-form-item");
            var lab = new TagBuilder("label");

            lab.AddCssClass("layui-form-label");
            lab.InnerHtml = des == null ? "" : des.Description;
            var div2 = new TagBuilder("div");

            if (inputModel.DisplayType == DisplayType.block)
            {
                div2.AddCssClass("layui-input-block");
            }
            if (inputModel.DisplayType == DisplayType.inline)
            {
                div2.AddCssClass("layui-input-inline");
            }
            div2.InnerHtml     = tagBuilder.ToString();
            mainHtml.InnerHtml = lab.ToString() + div2.ToString();
            return(new MvcHtmlString(mainHtml.ToString()));

            /*
             * < div class="layui-form-item">
             *  <label class="layui-form-label">输入框</label>
             *  <div class="layui-input-block">
             *       <input type = "text" name="" placeholder="请输入" autocomplete="off" class="layui-input">
             *  </div>
             * </div>
             */
        }
예제 #8
0
        /// <summary>
        /// 通过使用指定的 HTML 帮助器、窗体字段的名称、文本内容、行数和列数以及指定的 HTML 特性,返回指定的 textarea 元素。
        /// </summary>
        /// <param name="htmlHelper"> 此方法扩展的 HTML 帮助器实例</param>
        /// <param name="name"> 要返回的窗体字段的名称。</param>
        /// <param name="value"> 文本内容。</param>
        /// <param name="htmlAttributes"> 一个对象,其中包含要为该元素设置的 HTML 特性。</param>
        /// <returns> textarea 元素。</returns>
        public static MvcHtmlString LayTextArea(this HtmlHelper htmlHelper, string name, string value, IDictionary <string, object> htmlAttributes)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr, htmlAttributes);

            return(htmlHelper.TextArea(name, value, attrs));
        }
예제 #9
0
        /// <summary>
        /// 通过使用指定的 HTML 帮助器、窗体字段的名称、文本内容、行数和列数以及指定的 HTML 特性,返回指定的 textarea 元素。
        /// </summary>
        /// <param name="htmlHelper"> 此方法扩展的 HTML 帮助器实例</param>
        /// <param name="name"> 要返回的窗体字段的名称。</param>
        /// <param name="value"> 文本内容。</param>
        /// <returns> textarea 元素。</returns>
        public static MvcHtmlString LayTextArea(this HtmlHelper htmlHelper, string name, string value)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr);

            return(htmlHelper.TextArea(name, value, attrs));
        }
예제 #10
0
        /// <summary>
        /// 使用指定 HTML 特性以及行数和列数,为由指定表达式表示的对象中的每个属性返回对应的 HTML textarea 元素。
        /// </summary>
        /// <typeparam name="TModel">模型的类型。</typeparam>
        /// <typeparam name="TProperty">属性的类型</typeparam>
        /// <param name="htmlHelper"> 此方法扩展的 HTML 帮助器实例。</param>
        /// <param name="expression"> 一个表达式,用于标识包含要呈现的属性的对象。</param>
        /// <param name="rows"> 行数。</param>
        /// <param name="columns">列数。</param>
        /// <param name="htmlAttributes">一个包含要为该元素设置的 HTML 特性的字典。</param>
        /// <returns> 一个由表达式表示的对象中的每个属性所对应的 HTML textarea 元素。</returns>
        public static MvcHtmlString LayTextAreaFor <TModel, TProperty>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, int rows, int columns, IDictionary <string, object> htmlAttributes)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr, htmlAttributes);

            return(htmlHelper.TextAreaFor(expression, rows, columns, attrs));
        }
예제 #11
0
        /// <summary>
        /// 使用指定 HTML 特性以及行数和列数,为由指定表达式表示的对象中的每个属性返回对应的 HTML textarea 元素。
        /// </summary>
        /// <typeparam name="TModel">模型的类型。</typeparam>
        /// <typeparam name="TProperty">属性的类型</typeparam>
        /// <param name="htmlHelper"> 此方法扩展的 HTML 帮助器实例。</param>
        /// <param name="expression"> 一个表达式,用于标识包含要呈现的属性的对象。</param>
        /// <param name="htmlAttributes">一个包含要为该元素设置的 HTML 特性的字典。</param>
        /// <returns> 一个由表达式表示的对象中的每个属性所对应的 HTML textarea 元素。</returns>
        public static MvcHtmlString LayTextAreaFor <TModel, TProperty>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, object htmlAttributes)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr, htmlAttributes);

            return(htmlHelper.TextAreaFor(expression, attrs));
        }
예제 #12
0
        /// <summary>
        /// 通过使用指定的 HTML 帮助器、窗体字段的名称、文本内容、行数和列数以及指定的 HTML 特性,返回指定的 textarea 元素。
        /// </summary>
        /// <param name="htmlHelper"> 此方法扩展的 HTML 帮助器实例</param>
        /// <param name="name"> 要返回的窗体字段的名称。</param>
        /// <param name="value"> 文本内容。</param>
        /// <param name="rows"> 行数。</param>
        /// <param name="columns">列数。</param>
        /// <param name="htmlAttributes"> 一个对象,其中包含要为该元素设置的 HTML 特性。</param>
        /// <returns> textarea 元素。</returns>
        public static MvcHtmlString LayTextArea(this HtmlHelper htmlHelper, string name, string value, int rows, int columns, object htmlAttributes)
        {
            var attrs = LayHtmlHelper.AddLayUIClass(classStr, htmlAttributes);

            return(htmlHelper.TextArea(name, value, rows, columns, attrs));
        }