Example #1
0
        /// <summary>
        ///     Fügt der Tabelle der diese Spalte zugeordnet ist eine weitere Spalte hinzu, die für jede Zeile den Wert ausgibt,
        ///     der sich aus der festgelegten Expression
        ///     ergibt.
        /// </summary>
        /// <typeparam name="TColumn">
        ///     Typ der Eigenschaft des <see cref="TGrid">Zeilen-Models</see>, welches in der Spalte
        ///     angezeigt wird.
        /// </typeparam>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TGrid"></typeparam>
        /// <param name="column"></param>
        /// <param name="expression">Expression über die für jede Zeile der anzuzeigende Wert ermittelt wird.</param>
        /// <param name="title">Titel der Spalte, der im Tabellenkopf angezeigt werden soll.</param>
        /// <returns>Die Spalte.</returns>
        public static GridColumn <TModel, TGrid, TColumn> ColumnFor <TModel, TGrid, TColumn>(this IGridColumn <TModel, TGrid> column,
                                                                                             Expression <Func <TGrid, TColumn> > expression)
        {
            string labelByresource = LabelHelper.GetLabelFromResourceByPropertyName <Resources_Domain>(typeof(TGrid), expression.ToString().Split('.').Last());

            return(column.Grid.ColumnFor(expression, labelByresource));
        }
Example #2
0
        public static string GetLabel(ModelMetadata modelMetaData, string label)
        {
            if (label != null)
            {
                /*Das Label wurde als Parameter übergeben => den Parameter verwenden*/
                return(label);
            }
            else
            {
                if (!string.IsNullOrEmpty(modelMetaData.DisplayName))
                {
                    /*Es wurde ein Display- bzw. ein DisplayNameAttribute am Property definiert*/
                    return(modelMetaData.DisplayName);
                }
                else
                {
                    /*Label wird über die per Konvention definierte Resource versucht zu laden.*/
                    if (!string.IsNullOrWhiteSpace(modelMetaData.PropertyName))
                    {
                        return(LabelHelper.GetLabelFromResourceByPropertyName <Resources_Domain>(modelMetaData.ContainerType, modelMetaData.PropertyName));
                    }
                }
            }

            return(string.Empty);
        }
Example #3
0
        /// <summary>
        ///     Zeigt statischen Inhalt (der Wert im Model) mit Label an.
        ///     Der angezeigte Wert wird nicht gebunden!
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="placeholder">Der Wert der angezeigt wird, wenn der Wert null ist.</param>
        /// <param name="label"></param>
        /// <param name="formatString">Optionale Angabe zur Formatierung des Inhaltes.</param>
        /// <returns></returns>
        public MvcHtmlString Static <TProperty>(Expression <Func <TModel, TProperty> > expression, string label = null,
                                                string placeholder = null, string formatString = null)
        {
            ModelMetadata modelMetadata = ModelMetadata.FromLambdaExpression(expression, Helper.ViewData);

            if (modelMetadata.PropertyName != "DisplayName")
            {
                label = FormControlModel.GetLabel(modelMetadata, label);
            }
            else
            {
                string        reducedExpression   = expression.ToString().Replace(".DisplayName", "").Split(new[] { '.' }, 2, StringSplitOptions.RemoveEmptyEntries)[1];
                ModelMetadata parentModelMetadata = ModelMetadata.FromStringExpression(reducedExpression, Helper.ViewData);
                label = FormControlModel.GetLabel(parentModelMetadata, label);
            }


            object value;

            if (modelMetadata.Model != null)
            {
                /*Wenn die Expression auf einen Wert ungleich NULL zeigt, zeige diesen als ToString an*/
                value = modelMetadata.Model;

                if (modelMetadata.ModelType.IsEnum)
                {
                    string localizedEnumValue = LabelHelper.GetLabelFromResourceByPropertyName <Resources_Domain>(modelMetadata.ModelType, value.ToString());
                    if (!string.IsNullOrWhiteSpace(localizedEnumValue))
                    {
                        value = localizedEnumValue;
                    }
                }
                if (!string.IsNullOrWhiteSpace(formatString))
                {
                    /*Es ist ein Format für die Ausgabe angegeben => Formatieren!*/
                    value = string.Format(formatString, value);
                }
            }
            else
            {
                /*Wenn die Expression auf einen Wert zeigt der NULL ist, wird der Platzhalter-Text verwendet.*/
                value = placeholder;
            }

            StaticControlModel model = new StaticControlModel(Helper, label, value);

            return(Helper.Partial("EditorTemplates/Forms/Static", model));
        }
Example #4
0
        /// <summary>
        /// </summary>
        /// <typeparam name="TPropertyAndEnum">>Der Typ der Enum, deren Member in der Auswahlbox angezeigt werden sollen.</typeparam>
        /// <param name="expression"></param>
        /// <param name="placeholder">
        ///     Der Placeholder gibt an, welcher Wert angezeigt wird, wenn keine Auswahl getroffen ist/wurde.
        ///     Ist der Platzhalter null, ist der erste Wert der Box vorausgewählt.
        ///     Wenn der Platzhalter gesetzt ist, symbolisiert dieser den Text, der angezeigt wird, wenn null ausgewählt ist.
        /// </param>
        /// <param name="label"></param>
        /// <returns></returns>
        public MvcHtmlString Select <TPropertyAndEnum>(Expression <Func <TModel, TPropertyAndEnum> > expression, string placeholder,
                                                       string label = null) /*where TPropertyAndEnum : struct, IConvertible*/
        {
            if (!typeof(TPropertyAndEnum).IsEnum && !(typeof(TPropertyAndEnum).IsValueType && typeof(TPropertyAndEnum).GenericTypeArguments[0].IsEnum))
            {
                throw new ArgumentException("T must be an enumerated type");
            }
            Type baseEnumType;

            if (typeof(TPropertyAndEnum).IsEnum)
            {
                baseEnumType = typeof(TPropertyAndEnum);
            }
            else
            {
                baseEnumType = typeof(TPropertyAndEnum).GenericTypeArguments[0];
            }
            Array values          = Enum.GetValues(baseEnumType);
            IList selectableItems = new List <dynamic>();

            foreach (object value in values)
            {
                object item = new {
                    Value = value,
                    Text  = LabelHelper.GetLabelFromResourceByPropertyName <Resources_Domain>(
                        baseEnumType,
                        value.ToString())
                };
                selectableItems.Add(item);
            }

            ModelMetadata modelMetadata = ModelMetadata.FromLambdaExpression(expression, Helper.ViewData);
            DropDownModel dropDownModel = new DropDownModel(Helper,
                                                            modelMetadata,
                                                            ExpressionHelper.GetExpressionText(expression),
                                                            selectableItems,
                                                            "Value",
                                                            "Text",
                                                            label,
                                                            placeholder);

            return(Helper.Partial("EditorTemplates/Forms/Select", dropDownModel));
        }
Example #5
0
        private static string GetEnumMemberText(Type baseEnumType, object value)
        {
            if (value == null)
            {
                return(null);
            }

            if (baseEnumType == typeof(Country))
            {
                /*Sonderbehandlung für Country-enum*/
                return(Resources_Countries.ResourceManager.GetString(value.ToString()));
            }

            string labelFromResourceByPropertyName = LabelHelper.GetLabelFromResourceByPropertyName <Resources_Domain>(baseEnumType, value.ToString());

            if (!string.IsNullOrEmpty(labelFromResourceByPropertyName))
            {
                return(labelFromResourceByPropertyName);
            }

            return(TypeHelper.GetEnumMemberDescription((Enum)value));
        }
Example #6
0
        /// <summary>
        /// Rendert den Wert eines Objektes oder liefert einen Platzhalter, wenn der Wert NULL ist.
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public object ValueOrDefault(object value, string placeholder = "---")
        {
            if (value != null)
            {
                if (value.GetType().IsEnum)
                {
                    // TODO: Funktioniert das bei Nullable<enum>
                    string localizedEnumValue = LabelHelper.GetLabelFromResourceByPropertyName <Resources_Domain>(value.GetType(), value.ToString());
                    if (!string.IsNullOrWhiteSpace(localizedEnumValue))
                    {
                        value = localizedEnumValue;
                    }
                }


                return(value);
            }
            else
            {
                return(placeholder);
            }
        }