CRM_EasyUI_Comon/TextBoxForExtension.cs

(开头部分) 10KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web;
using System.Diagnostics.CodeAnalysis;
using System.Linq.Expressions;
using System.Web.Routing;
namespace System.Web.Mvc.Html
{
    public static class TextBoxForExtension
    {
        public static MvcHtmlString BsTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
             Expression<Func<TModel, TProperty>> expression, string css = "", string placeholder = "", string Readonly = "", string value = "")
        {
            TagBuilder tagBuilder = new TagBuilder("input");
            ModelMetadata metadata = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData);
            //tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(ExpressionHelper.GetExpressionText(expression), metadata));
            string name = ExpressionHelper.GetExpressionText(expression);
            //  var vas = htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata);
            htmlHelper.ValidateFor(expression);
            tagBuilder.MergeAttribute("name", name);
            if (!string.IsNullOrEmpty(placeholder))
                tagBuilder.MergeAttribute("placeholder", placeholder);
            tagBuilder.GenerateId(name);
            tagBuilder.MergeAttribute("type", "text");//核心代码,直接通过这个方法可以获取属性上的验证信息,如:“data-val= ....”。有一点要注意,在一个属性上,调用了这个方法完成后。mvc底层代码会自动释放这个验证对象。也就是说,一个属性的输入文本框只会第一个上边会生成相关的验证。 var vas = htmlHelper.GetUnobtrusiveValidationAttributes(name,metadata); if (!string.IsNullOrEmpty(placeholder)) { tagBuilder.MergeAttribute("placeholder",placeholder); }       //string类型,看有没长度限制,如果有,增加maxlength,minlength
            if (!string.IsNullOrEmpty(value))
                tagBuilder.MergeAttribute("value", value.Trim());
            if (!string.IsNullOrEmpty(Readonly) && Readonly == "Y")
                tagBuilder.MergeAttribute("readonly", Readonly);
            tagBuilder.AddCssClass("form-control");
            if (!string.IsNullOrEmpty(css))
            {
                tagBuilder.AddCssClass(css);
            }       //约定,属性名以day或者date结束的属性为日体,为其增加日期选择功能。
            ModelState modelState;
            if (htmlHelper.ViewData.ModelState.TryGetValue(name, out modelState))
            {
                if (modelState.Errors.Count > 0)
                {
                    tagBuilder.AddCssClass(HtmlHelper.ValidationInputCssClassName);
                }
            }
            tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata));
          return new MvcHtmlString(tagBuilder.ToString());
        }

        public static MvcHtmlString BsTextBox(this HtmlHelper htmlHelper, string name = "",
            string css = "", string placeholder = "", string Readonly = "", string value = "")
        {
            TagBuilder tagBuilder = new TagBuilder("input");
            tagBuilder.MergeAttribute("type", "text");
            tagBuilder.MergeAttribute("name", name, true);

            tagBuilder.GenerateId(name);
            if (!string.IsNullOrEmpty(placeholder))
后面还有 131 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。