码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-01-23 06:13:40      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:特性 反射

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());
        }

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

标签:特性 反射

原文地址:http://blog.csdn.net/qq6648208281/article/details/43038727

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!