Exemplo n.º 1
0
        public static HtmlTag OptionGroup(this SelectTag tag, string display)
        {
            HtmlTag option = tag.MakeOptionGroup(display);

            tag.Append(option);
            return(option);
        }
Exemplo n.º 2
0
        static HtmlTag GenerateSelect <TModel> (TModel model, PropertyInfo member)
        {
            var modelValue = member.GetValue(model, null);

            if (modelValue == null)
            {
                return(null);
            }

            //<div class="control-group">
            //  <label class="control-label" for="Email">Email:</label>
            //  <div class="controls">
            //    <select type="checkbox" class="input-xlarge" data-val="true"
            //        data-val-email="O e-mail digitado não é válido."
            //        data-val-required="O campo E-mail é obrigatório."
            //        id="Email" name="Email" value="@Model.Email">
            //       <option value="volvo">Volvo</option>
            //       <option value="saab">Saab</option>
            //    </select>
            //    <span class="field-validation-valid error" data-valmsg-for="Email"
            //        data-valmsg-replace="true"></span>
            //    <p class="help-block">Ex.: [email protected]</p>
            //  </div>
            //</div>

            var cg = CreateControlGroup(model, member);

            var selectType = model.GetAttribute(member,
                                                typeof(ScaffoldSelectPropertiesAttribute)) as ScaffoldSelectPropertiesAttribute;

            var selekt = new SelectTag()
                         .Attr("name", member.Name)
                         .Id(member.Name);

            if (selectType.Type == SelectType.Multiple)
            {
                selekt.Attr("multiple", "multiple");
            }

            if (member.PropertyType.IsEnum)
            {
                var atts = modelValue.GetType().GetCustomAttributes(true);
                GlobalizedEnumAttribute ge = null;
                if (atts.Length == 0)
                {
                    ge = null;
                }
                foreach (var a in atts)
                {
                    if (a.GetType() == typeof(GlobalizedEnumAttribute))
                    {
                        ge = (GlobalizedEnumAttribute)a;
                    }
                }
                var fields = modelValue.GetType().GetFields();
                for (int i = 1; i < fields.Length; i++)
                {
                    var    f    = fields [i];
                    string name = string.Empty;
                    if (ge == null)
                    {
                        name = f.GetValue(f.Name).ToString();
                    }
                    else
                    {
                        name = ge.GetName(f.Name);
                    }
                    var tag = new HtmlTag("option").Text(name);
                    selekt.Append(tag);
                    tag.Attr("value", f.Name);
                }
            }
            else
            {
                foreach (var i in (modelValue as IEnumerable))
                {
                    var tag = new HtmlTag("option").Text(i.ToString());
                    selekt.Append(tag);
                    tag.Attr("value", i.GetValue(selectType.ValueMember));
                }
            }


            FillValidation <TModel> (selekt, member);

            cg.Children [1].InsertFirst(selekt);

            return(cg);
        }