public static void EnumTemplate(HtmlHelper html, IXcstPackage package, ISequenceWriter <object> seqOutput) { XcstWriter output = DocumentWriter.CastElement(package, seqOutput); string? className = GetEditorCssClass(new EditorInfo("Enum", "select"), null); var htmlAttributes = CreateHtmlAttributes(html, className); ViewDataDictionary viewData = html.ViewData; Type modelType = viewData.ModelMetadata.ModelType; Type enumType = Nullable.GetUnderlyingType(modelType) ?? modelType; if (!enumType.IsEnum) { throw new InvalidOperationException("Enum template can only be used on Enum members."); } string?formatString = viewData.ModelMetadata.EditFormatString ?? viewData.ModelMetadata.DisplayFormatString; bool applyFormatInEdit = viewData.ModelMetadata.EditFormatString != null; IList <SelectListItem> options = EnumOptions(enumType, output, formatString, applyFormatInEdit); string optionLabel = viewData.ModelMetadata.Watermark ?? String.Empty; SelectInstructions.SelectHelper(html, output, viewData.ModelMetadata, String.Empty, options, optionLabel, multiple: false, htmlAttributes: htmlAttributes); }
public static void BooleanTemplate(HtmlHelper html, IXcstPackage package, ISequenceWriter <object> seqOutput) { ViewDataDictionary viewData = html.ViewData; bool?value = null; if (viewData.Model != null) { value = Convert.ToBoolean(viewData.Model, CultureInfo.InvariantCulture); } if (viewData.ModelMetadata.IsNullableValueType) { XcstWriter output = DocumentWriter.CastElement(package, seqOutput); string?className = GetEditorCssClass(new EditorInfo("Boolean", "select"), "list-box tri-state"); var htmlAttributes = CreateHtmlAttributes(html, className); SelectInstructions.Select(html, output, String.Empty, TriStateValues(value), htmlAttributes: htmlAttributes); } else { string?className = GetEditorCssClass(new EditorInfo("Boolean", "input", InputType.CheckBox), "check-box"); var htmlAttributes = CreateHtmlAttributes(html, className); InputInstructions.CheckBox(html, package, seqOutput, String.Empty, value.GetValueOrDefault(), htmlAttributes: htmlAttributes); } }
public static void ListBoxTemplate(HtmlHelper html, IXcstPackage package, ISequenceWriter <object> seqOutput) { XcstWriter output = DocumentWriter.CastElement(package, seqOutput); string? className = GetEditorCssClass(new EditorInfo("ListBox", "select"), null); var htmlAttributes = CreateHtmlAttributes(html, className); ViewDataDictionary viewData = html.ViewData; IEnumerable <SelectListItem>?options = Options(viewData); SelectInstructions.SelectHelper(html, output, viewData.ModelMetadata, String.Empty, options, optionLabel: null, multiple: true, htmlAttributes: htmlAttributes); }
public static void BooleanTemplate(HtmlHelper html, IXcstPackage package, ISequenceWriter <object> seqOutput) { XcstWriter output = DocumentWriter.CastElement(package, seqOutput); ViewDataDictionary viewData = html.ViewData; bool?value = null; if (viewData.Model != null) { value = Convert.ToBoolean(viewData.Model, CultureInfo.InvariantCulture); } if (viewData.ModelMetadata.IsNullableValueType) { output.WriteStartElement("select"); string?className = DefaultEditorTemplates.GetEditorCssClass(new EditorInfo("Boolean", "select"), "list-box tri-state"); HtmlAttributeHelper.WriteClass(className, null, output); HtmlAttributeHelper.WriteBoolean("disabled", true, output); foreach (SelectListItem item in DefaultEditorTemplates.TriStateValues(value)) { SelectInstructions.WriteOption(item, output); } output.WriteEndElement(); } else { output.WriteStartElement("input"); output.WriteAttributeString("type", "checkbox"); string?className = DefaultEditorTemplates.GetEditorCssClass(new EditorInfo("Boolean", "input", InputType.CheckBox), "check-box"); HtmlAttributeHelper.WriteClass(className, null, output); HtmlAttributeHelper.WriteBoolean("disabled", true, output); HtmlAttributeHelper.WriteBoolean("checked", value.GetValueOrDefault(), output); output.WriteEndElement(); } }
public static void DropDownListTemplate(HtmlHelper html, IXcstPackage package, ISequenceWriter <object> seqOutput) { XcstWriter output = DocumentWriter.CastElement(package, seqOutput); string? className = GetEditorCssClass(new EditorInfo("DropDownList", "select"), null); var htmlAttributes = CreateHtmlAttributes(html, className); ViewDataDictionary viewData = html.ViewData; string?optionLabel = null; IEnumerable <SelectListItem>?options = Options(viewData); OptionList?optionList = options as OptionList; if (optionList?.AddBlankOption == true) { optionLabel = viewData.ModelMetadata.Watermark ?? String.Empty; } SelectInstructions.SelectHelper(html, output, viewData.ModelMetadata, String.Empty, options, optionLabel, multiple: false, htmlAttributes: htmlAttributes); }