国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > MVC htmlhelp类扩展for lambda表达式方式

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

来源:程序员人生   发布时间:2015-02-03 08:36:58 阅读次数:2911次
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());
        }
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生