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"); }
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); }
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); }