private IEnumerable <object> GetParentValues(CascadingDropDownAttribute child, ViewDataDictionary viewData) { var parentMetadata = ModelMetadata.FromStringExpression(child.ParentName, viewData); var viewModelType = parentMetadata.ContainerType; var parentProperty = parentMetadata.PropertyName; var properties = GetPropertyInfo(viewModelType, viewData, 0); var theProperty = properties.FirstOrDefault(x => x.Name == parentProperty); var cascadingAttr = theProperty.GetCustomAttribute <CascadingDropDownAttribute>(); if (cascadingAttr != null) { foreach (var obj in GetParentValues(cascadingAttr, viewData)) { yield return(obj); } } yield return(parentMetadata.Model); }
private IEnumerable<object> GetParentValues(CascadingDropDownAttribute child, ViewDataDictionary viewData) { var parentMetadata = ModelMetadata.FromStringExpression(child.ParentName, viewData); var viewModelType = parentMetadata.ContainerType; var parentProperty = parentMetadata.PropertyName; var properties = GetPropertyInfo(viewModelType, viewData, 0); var theProperty = properties.FirstOrDefault(x => x.Name == parentProperty); var cascadingAttr = theProperty.GetCustomAttribute<CascadingDropDownAttribute>(); if (cascadingAttr != null) { foreach (var obj in GetParentValues(cascadingAttr, viewData)) { yield return obj; } } yield return parentMetadata.Model; }
private static void SetViewdataWithValues(CascadingDropDownAttribute attr, string name, IDictionary <string, object> viewData, params object[] values) { var viewDataKey = "DDKey_" + name; viewData[viewDataKey] = viewData[viewDataKey] ?? attr.GetMethodResult(values); }
private static void SetViewdataWithValues(CascadingDropDownAttribute attr, string name, IDictionary<string, object> viewData, params object[] values) { var viewDataKey = "DDKey_" + name; viewData[viewDataKey] = viewData[viewDataKey] ?? attr.GetMethodResult(values); }