Exemplo n.º 1
0
        public void add_element_name_to_select()
        {
            var select = new SelectTag();

            ElementRequest request = For(x => x.Address.City);

            request.ElementId = "AddressCity";

            DefaultHtmlConventions.AddElementName(request, select);

            select.Attr("name").ShouldEqual("AddressCity");
        }
Exemplo n.º 2
0
        public override HtmlTag Build(ElementRequest request)
        {
            var selectTag   = new SelectTag();
            var elementName = CCHtmlConventionsKO.DeriveElementName(request);
            var elementRoot = elementName.Contains("EntityId") ? elementName.Replace(".EntityId", "") : elementName;

            selectTag.Attr("data-bind", "options:_" + elementRoot + "List," +
                           "optionsValue:'Value'," +
                           "optionsText:'Text'," +
                           "value:" + elementName);

            return(selectTag);
        }
        public HtmlTag ToHtmlTag()
        {
            _htmlRoot = new HtmlTag("div").AddClass("KYT_editor_input");
            if (_hide)
            {
                _htmlRoot.Hide();
            }
            ElementRequest request = _generator.GetRequest(_expression);

            Action <SelectTag> action = x =>
            {
                var value = request.RawValue;
                if (_items != null)
                {
                    foreach (SelectListItem option in _items)
                    {
                        x.Option(option.Text, option.Value);
                    }
                    if (value != null && value.ToString().IsNotEmpty())
                    {
                        x.SelectByValue(value.ToString());
                    }
                    else
                    {
                        SelectListItem defaultOption =
                            _items.FirstOrDefault(o => o.Selected);
                        if (defaultOption != null)
                        {
                            x.SelectByValue(defaultOption.Value);
                        }
                    }
                }
            };
            SelectTag tag  = new SelectTag(action);
            string    name = string.Empty;

            request.Accessor.Names.Each(x => name += x + ".");
            name = name.Substring(0, name.Length - 1);
            tag.Attr("name", name);
            addInternalCssClasses(_htmlRoot, tag);
            if (_elementId.IsNotEmpty())
            {
                tag.Id(_elementId);
            }
            _htmlRoot.Child(tag);
            return(_htmlRoot);
        }
Exemplo n.º 4
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);
        }