MVC 自定义 以表达式树为参数的htmlhelper
public static MvcHtmlString Try<TModel, TProperty>( this HtmlHelper<TModel> htmlHelper, //声明这个方法Try是扩展函数,用来扩展HtmlHelper<TModel> Expression<Func<TModel, TProperty>> expression//这里声明需要使用时传入表达式树 ) { var builder = new TagBuilder("textarea");//建立一个TagBuidlder对象,标签名是textarea builder.AddCssClass("ckeditor");//加入一个ckeditor的css类 builder.MergeAttribute("cols", "80");//加入或修改属性cols为80 builder.MergeAttribute("name", "editor1"); builder.MergeAttribute("id", expression.Name); // 加入或修改id属性为表达式树的Name var value = ModelMetadata.FromLambdaExpression( expression, htmlHelper.ViewData ).Model;//通过表达式树从元数据中获取具体对象 builder.SetInnerText(value.ToString());// 设置内部文本 return MvcHtmlString.Create(builder.ToString());//将builder对象转换MvcHtmlString对象并返回 }
参考凌鸢的文章。