Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
        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);
        }