private string GetSelectText() { // Gets the datasource name string datasourceName = (_metadata.AdditionalValues[nameof(FWSelectAttribute)] as FWSelectAttribute).DataSource; // Looks for the datasource inside the view model. var datasource = FWDatasourceHelper.GetDatasourceFromModel(datasourceName, _requestContext.Model); // If the datasource is not found, try to look for it inside the container object. if (datasource == null) { datasource = FWDatasourceHelper.GetDatasourceFromModel(datasourceName, Container); } if (datasource == null) { throw new FWMissingDatasourceException("DataSource"); } return(datasource.Where(f => f.Value.Equals(_model.ToString())).FirstOrDefault()?.Value.ToString()); }
/// <summary> /// Creates a new Select control. /// </summary> /// <param name="requestContext">The request helper.</param> /// <param name="model">The current model.</param> /// <param name="metadata">The model metadata.</param> /// <param name="container">The model container object.</param> public FWSelectControl(FWRequestContext requestContext, object model, ModelMetadata metadata, object container = null) : base(requestContext, model, metadata) { if (metadata.UnderlyingOrModelType == FWKnownTypes.Bool) { _datasource = new List <IFWDatasourceItem> { new FWDatasourceItem() { Id = "true", Value = GetModelResource("TRUE") }, new FWDatasourceItem() { Id = "false", Value = GetModelResource("FALSE") } }; if (model != null) { _selected = model.ToString(); } } else if (FWReflectionHelper.IsEnum(metadata.ModelType)) { var enumDictionary = FWEnumHelper.GetEnumAsDictonary(metadata.ModelType); var datasource = new List <IFWDatasourceItem>(); // Gets the resource values for the enum items. foreach (var item in enumDictionary) { datasource.Add(new FWDatasourceItem() { Id = item.Key, Value = GetModelResource(item.Value) }); } _datasource = datasource; _selected = FWEnumHelper.GetValues(model as Enum).FirstOrDefault(); } else { // Looks for the datasource inside the view model. _datasource = FWDatasourceHelper.GetDatasourceFromModel(_datasourceName, requestContext.Model); // If the datasource is not found, try to look for it inside the container object. if (_datasource == null) { _datasource = FWDatasourceHelper.GetDatasourceFromModel(_datasourceName, container); } if (model != null) { _selected = model.ToString(); } } if (DataBind) { requestContext.HttpContext.AddDatasource(metadata.PropertyName, metadata.ContainerMetadata.ModelType, _datasource); _datasourceName = metadata.PropertyName; } _allowClear = !IsRequired; }