public HtmlTag Build(ElementRequest request) { if (_url.IsEmpty()) { _url = request.Get<IUrlRegistry>().UrlFor(_lookupType); } request.Get<IAssetRequirements>().Require("fubu.autocomplete.js"); var label = request.Get<IDisplayFormatter>().GetDisplayForValue(request.Accessor, request.RawValue); var hidden = new HiddenTag() .Id(request.ElementId) .Name(request.ElementId) .AddClass("lookup") .Attr("value", request.RawValue == null ? string.Empty : request.RawValue.ToString()); var textboxId = "{0}Value".ToFormat(request.ElementId); var textbox = new TextboxTag(textboxId, label) .Id(textboxId) .Data("lookup-url", _url) .Data("value-for", request.ElementId) .AddClass("autocomplete"); hidden.After(textbox); return hidden; }
public DefaultAspNetMvcHtmlConventions() { Editors.IfPropertyIs<bool>().BuildBy(req => { var check = new CheckboxTag(req.Value<bool>()).Attr("value", req.StringValue()); var hidden = new HiddenTag().Attr("name", req.ElementId).Attr("value", false); return check.Append(hidden); }); Editors.IfPropertyIs<IEnumerable<SelectListItem>>().BuildBy(req => { var list = req.Value<IEnumerable<SelectListItem>>(); var drop = new SelectTag(); foreach (var item in list) { drop.Add("option").Attr("value", item.Value).Attr("selected", item.Selected).Text(item.Text); } return drop; }); Editors.Always.ModifyWith(AddElementName); //Editors.Always.BuildBy(TagActionExpression.BuildTextbox); //Displays.Always.BuildBy(req => new HtmlTag("span").Text(req.StringValue())); //Labels.Always.BuildBy(req => new HtmlTag("span").Text(req.Accessor.Name)); }
public DataAnnotationHtmlConventions() { Labels.IfAttribute<DisplayNameAttribute>().Modify((h, r, a) => h.Text(a.DisplayName)); Inputs.IfAttribute<DataTypeAttribute>().BuildBy((r, a) => { if (a.DataType == DataType.Text) return new HtmlTag("textarea").Text(r.GetAttemptedValue() ?? r.GetValue<string>()); return null; }); Inputs.IfAttribute<DataTypeAttribute>().Modify((h, r, a) => { if (a.DataType == DataType.Password) h.Attr("type", "password").Attr("value", null).Attr("autocomplete", "off"); }); Inputs.IfAttribute<HiddenInputAttribute>().BuildBy((r, a) => { var hidden = new HiddenTag().Attr("value", r.GetAttemptedValue() ?? r.GetValue<object>()); return hidden; }); Inputs.IfAttribute<StringLengthAttribute>().Modify((h, r, a) => { h.Attr("maxlength", a.MaximumLength); if (a.MinimumLength > 0) h.Attr("minlength", a.MinimumLength); }); Inputs.Always.Modify((h, r) => AddNumberClasses(r, h)); }
public SamlResponseRedirectionDocument(string response, string destination) { Title = "Saml2 Response Redirection"; var form = new FormTag(destination); Push(form); var hiddenTag = new HiddenTag().Attr("name", SamlAuthenticationStrategy.SamlResponseKey) .Attr("value", response); Add(hiddenTag); Pop(); AddJavaScript("window.onload = function () { document.forms[0].submit(); }"); }
public DefaultHtmlConventions() { Displays.Always.BuildBy(req => new HtmlTag("span").Text(req.GetValue<string>())); Labels.Always.BuildBy(req => new HtmlTag("label").Attr("for", req.Id).Text(req.Accessor.InnerProperty.Name.BreakUpCamelCase())); Inputs.Always.BuildBy(req => { return new TextboxTag().Attr("value", req.GetAttemptedValue() ?? req.GetValue<string>()); }); Inputs.If<bool>().BuildBy(req => { var attemptedVal = req.GetAttemptedValue(); var isChecked = attemptedVal != null ? attemptedVal.Split(',').First() == Boolean.TrueString: req.GetValue<bool>(); var check = new CheckboxTag(isChecked).Attr("value", true); var hidden = new HiddenTag().Attr("name", req.Name).Attr("value", false); return check.After(hidden); }); Inputs.If<IEnumerable<SelectListItem>>().BuildBy(BuildSelectList); Inputs.If<MultiSelectList>().BuildBy(BuildSelectList); All.Always.Modify((h, r) => { h.Id((string.IsNullOrEmpty(r.Id) ? null : r.Id) ?? (string.IsNullOrEmpty(h.Id()) ? null : h.Id())); if (h.IsInputElement()) { h.Attr("name", r.Name ?? (string.IsNullOrEmpty(h.Attr("name")) ? null : h.Attr("name"))); } }); Labels.Always.Modify((h, r) => h.Id(r.Id + "_" + "Label")); Displays.Always.Modify((h, r) => h.Id(r.Id + "_" + "Display")); Inputs.Always.Modify((h, r) => { //Validation class ModelState modelState; if (r.ViewContext.ViewData.ModelState.TryGetValue(r.Name, out modelState) && modelState.Errors.Count > 0) { h.AddClass(HtmlHelper.ValidationInputCssClassName); } }); }
public CombinationConventions() { Inputs.If<CombinationType>().BuildBy((r,p) => { var val = r.GetValue<CombinationType>(); if (val.IsSingle) { var div = new DivTag().Text(val.Name); var hidden = new HiddenTag().Id(r.Id).Attr("name", r.Name).Attr("value", val.Value); hidden.WrapWith(div); return hidden.RenderFromTop(); } return p.Build<CombinationType>(x=>x.Items); }); All.If<DateTime>().Modify((h, r) => { var val = r.GetValue<DateTime>(); h.Text(val.ToString("yyyyMMdd")); }); }
private static HtmlTag MethodOverride(this HtmlTag tag, HttpVerbs method) { var hidden = new HiddenTag().Attr("name", "X-HTTP-Method-Override"); switch (method) { case HttpVerbs.Put: return tag.Append(hidden.Attr("value", "PUT")); case HttpVerbs.Delete: return tag.Append(hidden.Attr("value", "DELETE")); case HttpVerbs.Head: return tag.Append(hidden.Attr("value", "HEAD")); } throw new InvalidOperationException(string.Format("There is no need for an override for {0}.", method)); }