public PropertyVM Create <Te, Tp>(Expression <Func <Te, Tp> > selector, object instance) { var propertyInfo = ExpressionUtils.GetPropertyInfo(selector); var propertyName = ExpressionUtils.GetPropertyName(selector); // var value = selector.Compile().Invoke((Te) _htmlHelper.ViewData.Model); return(Create <Tp>(propertyName, propertyInfo, instance)); }
public static TagBuilder LabelFor <Te, Tp>(this HtmlHelper <Te> htmlHelper, Expression <Func <Te, Tp> > selector) where Te : class { var propertyInfo = ExpressionUtils.GetPropertyInfo(selector); var builder = new ExTagBuilder("label"); builder.Attributes.Add("for", ExpressionUtils.GetPropertyName(selector)); builder.InnerHtml = Config.DescriptionProvider.GetProperty(propertyInfo, htmlHelper.ViewData.Model).DisplayName; return(builder); }
public void AddColumns <T>(AjaxGridVM model, params Expression <Func <T, object> >[] selectors) { var metaData = MetaDataProvider.Get(typeof(T)).GetProperties(); var columns = new Dictionary <string, AjaxGridVM.Column>(); foreach (var selector in selectors) { var info = ExpressionUtils.GetPropertyInfo(selector); var meta = metaData.First(x => x.Info == info); columns.Add(meta.DisplayName(), new AjaxGridVM.Column(info.Name)); } model.ColumnTitles.AddRange(columns.Select(x => x.Key)); model.Columns.AddRange(columns.Select(x => x.Value)); }