Ejemplo n.º 1
0
        private void AppendInitializeSelectEnumFunction(StringBuilder sb, SelectDropdownContext selectDropdownContext, string functionName, string className)
        {
            Contract.Requires(sb != null && selectDropdownContext != null);

            string dataString = null;

            if (selectDropdownContext.OptionDataSet != null)
            {
                var elements = selectDropdownContext.OptionDataSet.Select(x => $"{{id:'{x.Value}', text:'{x.Text}'}}").ToArray();
                dataString = string.Join(",", elements);
            }
            sb.AppendLine("function " + functionName + "(){");
            sb.AppendLine("var select = $(\"." + className + "\").select2({");
            sb.AppendLine("data: [" + dataString + "]");
            sb.AppendLine("});");
            sb.AppendLine("}");
        }
Ejemplo n.º 2
0
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            if (context == null || output == null)
            {
                throw new ArgumentNullException();
            }
            Contract.EndContractBlock();

            var selectDropdownContext = new SelectDropdownContext();

            context.Items.Add(typeof(SelectDropdownTagHelper), selectDropdownContext);

            await output.GetChildContentAsync();

            var modelExpression = SelectedValueProperty ?? SelectedIdProperty;
            var key             = modelExpression.Name.ToLower();
            var className       = $"select2-dropdown-{key}";
            var currentValues   = _generator.GetCurrentValues(ViewContext, modelExpression.ModelExplorer, modelExpression.Name, false);
            var selectBuilder   = _generator.GenerateSelect(ViewContext, modelExpression.ModelExplorer, null, modelExpression.Name, Enumerable.Empty <SelectListItem>(), currentValues, false, null);

            if (selectBuilder != null)
            {
                var classes = className;
                if (context.AllAttributes.TryGetAttribute("class", out var classTag))
                {
                    classes = $"{classes} {classTag.Value}";
                }

                if (selectBuilder.Attributes.ContainsKey("class"))
                {
                    selectBuilder.Attributes["class"] = $"{selectBuilder.Attributes["class"]} {classes}";
                }
                else
                {
                    selectBuilder.Attributes.Add("class", classes);
                }
                output.Content.AppendHtml(selectBuilder);
            }

            output.Content.AppendLine();

            output.TagName = "";

            var sb = new StringBuilder();

            AppendLocalizationScript(sb);

            var initializeFunctionName = "initializeFunction";

            sb.AppendLine("<script type=\"text/javascript\">");

            if (SelectedValueProperty != null)
            {
                if (OptionDataSet != null)
                {
                    AppendInitializeSelectDataSetFunction(sb, OptionDataSet, initializeFunctionName, className);
                }
                else if (selectDropdownContext.OptionDataSet != null)
                {
                    AppendInitializeSelectDataSetFunction(sb, selectDropdownContext.OptionDataSet, initializeFunctionName, className);
                }
            }
            else if (SelectedIdProperty != null)
            {
                AppendInitializeSelectAjaxFunction(sb, initializeFunctionName, className);
            }
            else
            {
                throw new NotImplementedException();
            }
            sb.AppendLine(initializeFunctionName + "();");
            sb.AppendLine("</script>");

            output.Content.AppendHtml(sb.ToString());
        }