示例#1
0
        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;
        }