Ejemplo n.º 1
0
        private static MvcHtmlString selectListFor <TPageModel, TProperty, TSourceDataModel>
        (
            HtmlHelper <TPageModel> html,
            Expression <Func <TPageModel, TProperty> > propertyExpression,
            Expression <Func <TPageModel, TSourceDataModel> > sourceEntityExpression,
            string bindValuePropertyName,
            string bindTextPropertyName,
            Expression <Func <TSourceDataModel, bool> > filter,
            Func <IQueryable <TSourceDataModel>, IOrderedQueryable <TSourceDataModel> > orderBy,
            bool insertDefaultOption,
            string defaultOptionText,
            string defaultOptionValue
        ) where TSourceDataModel : class
        {
            PropertyInfo          valueProperty = SelectListHelper.GetSelectListValuePropertyInfo(typeof(TSourceDataModel), bindValuePropertyName);
            PropertyInfo          textProperty  = SelectListHelper.GetSelectListTextPropertyInfo(typeof(TSourceDataModel), bindTextPropertyName);
            ModelMetadata         metadata      = ModelMetadata.FromLambdaExpression <TPageModel, TProperty>(propertyExpression, html.ViewData);
            string                value         = (metadata.Model == null ? "0" : metadata.Model.ToString());
            List <SelectListItem> list          = SelectListHelper.GetSelectListItems <TSourceDataModel>(valueProperty, textProperty, value, filter, orderBy);

            if (insertDefaultOption)
            {
                list.Insert(0, new SelectListItem {
                    Text = defaultOptionText, Value = defaultOptionValue
                });
            }
            return(html.DropDownListFor(propertyExpression, list));
        }