MVC htmlhelp类扩展for lambda表达式方式

前端之家收集整理的这篇文章主要介绍了MVC htmlhelp类扩展for lambda表达式方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
public static MvcHtmlString InputTextFor<TModel,TValue>(this HtmlHelper<TModel> html,Expression<Func<TModel,TValue>> expression,object attr=null)
        {
            DisplayAttribute disp = null;
            VilidateAttribute vilidate = null;
            string name = string.Empty;
            try
            {
                dynamic exp = expression.Body.GetType().GetProperty("Member").GetValue(expression.Body,null);
                var strName = (string)exp.Name;
                var p = typeof(TModel).GetProperty(strName);
                disp = p.GetCustomAttributes(typeof(DisplayAttribute),false).FirstOrDefault() as DisplayAttribute;
                vilidate = p.GetCustomAttributes(typeof(VilidateAttribute),false).FirstOrDefault() as VilidateAttribute;
                name = strName;
            }
            catch (Exception e)
            {
            }
            TagBuilder tag = new TagBuilder("input");
            tag.MergeAttribute("type","text");
            tag.MergeAttribute("class","form-control");
            tag.MergeAttribute("id","i-"+ name);
            tag.MergeAttribute("name","n-"+ name);
            tag.MergeAttribute("placeholder","请输入" + disp.Name);
            //验证
            foreach (var item in vilidate.GetInfo())
            {
                tag.MergeAttribute(item.Key,item.Value);
            }
            //附加
            if(attr!=null)
            {
                foreach (var item in attr.GetType().GetProperties(Reflection.BindingFlags.Instance | Reflection.BindingFlags.Public))
                {
                    tag.MergeAttribute(item.Name,item.GetValue(attr,null).ToString());
                }
            }
            tag.InnerHtml = disp == null ? "未设置Display" : "";
            return new MvcHtmlString(tag.ToString());
        }

猜你在找的PHP相关文章