using System; using System.Linq.Expressions; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; namespace Infrastructure.Extensions { public static class ViewDataDictionaryExtensions { public static void SelectList(this ViewDataDictionary viewData, string name, SelectList selectList) { viewData[name + "SelectList"] = selectList; } public static void SelectList(this ViewDataDictionary viewData, Expression> expression, Func getSelectListFunc, bool value = true) { if (value) { var name = (expression.Body as MemberExpression).Member.Name + "SelectList"; viewData[name] = getSelectListFunc(); } } public static void MultiSelectList(this ViewDataDictionary viewData, Expression> expression, Func getSelectListFunc, bool value = true) { if (value) { var name = (expression.Body as MemberExpression).Member.Name + "SelectList"; if (!viewData.ContainsKey(name)) { viewData[name] = getSelectListFunc(); } } } } }