Browse Source

select tag helper refactor

pull/272/head
yekalkan 9 years ago
parent
commit
9da812d9e7
  1. 34
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs
  2. 33
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  3. 45
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs

34
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
@ -75,6 +76,39 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers
return context.Items[FormGroupContents] as List<FormGroupContent>;
}
protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag)
{
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
return idAttr != null ? "for=\"" + idAttr.Value + "\"" : "";
}
protected virtual int GetInputOrder(ModelExplorer explorer)
{
return GetAttribute<DisplayOrder>(explorer)?.Number ?? 0;
}
protected virtual void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order)
{
var list = GetFormGroupContentsList(context);
if (list != null && !list.Any(igc => igc.Html.Contains("id=\"" + propertyName.Replace('.', '_') + "\"")))
{
list.Add(new FormGroupContent
{
Html = html,
Order = order
});
}
}
protected virtual string GetFormInputGroupAsHtml(TagHelperContext context, TagHelperOutput output)
{
var inputTag = GetInputTag(context, out var isCheckbox);
var inputHtml = RenderTagHelperOutput(inputTag, _encoder);
var label = GetLabelAsHtml(inputTag, isCheckbox);
return GetContent(label, inputHtml, isCheckbox);
}
}
}

33
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs

@ -29,30 +29,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
{
var html = GetFormInputGroupAsHtml(context, output);
var order = GetInputOrder();
var order = GetInputOrder(TagHelper.AspFor.ModelExplorer);
AddGroupToFormGroupContents(GetFormGroupContentsList(context), html, order);
AddGroupToFormGroupContents(context,TagHelper.AspFor.Name, html, order);
output.SuppressOutput();
}
protected virtual int GetInputOrder()
{
return GetAttribute<DisplayOrder>(TagHelper.AspFor.ModelExplorer)?.Number ?? 0;
}
protected virtual void AddGroupToFormGroupContents(List<FormGroupContent> list, string html, int order)
{
if (list != null && !list.Any(igc => igc.Html.Contains("id=\"" + TagHelper.AspFor.Name.Replace('.', '_') + "\"")))
{
list.Add(new FormGroupContent
{
Html = html,
Order = order
});
}
}
protected virtual string GetFormInputGroupAsHtml(TagHelperContext context, TagHelperOutput output)
{
var inputTag = GetInputTag(context, out var isCheckbox);
@ -98,12 +81,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
{
return "";
}
var label = GetLabelValue();
var checkboxClass = isCheckbox ? "class=\"form-check-label\" " : "";
return "<label " + checkboxClass + GetIdAttributeAsString(inputTag) + ">"
+ _localizer[label] +
+ _localizer[GetLabelValue()] +
"</label>";
}
@ -113,12 +95,5 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
TagHelper.AspFor.Metadata.DisplayName :
TagHelper.Label;
}
protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag)
{
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
return idAttr != null ? "for=\"" + idAttr.Value + "\"" : "";
}
}
}

45
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs

@ -25,28 +25,23 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
public override void Process(TagHelperContext context, TagHelperOutput output)
{
var selectTag = GetSelectTag(context);
var seelctAsHtml = RenderTagHelperOutput(selectTag, _encoder);
var labelAsHtml = GetLabelAsHtml(selectTag);
var content = GetContent(labelAsHtml,seelctAsHtml);
var html = GetFormInputGroupAsHtml(context, output);
var order = GetInputOrder(TagHelper.AspFor.ModelExplorer);
var order = GetAttribute<DisplayOrder>(TagHelper.AspFor.ModelExplorer);
var list = context.Items["InputGroupContents"] as List<FormGroupContent>;
if (list != null && !list.Any(igc => igc.Html.Contains("id=\"" + TagHelper.AspFor.Name.Replace('.', '_') + "\"")))
{
list.Add(new FormGroupContent
{
Html = content,
Order = order?.Number ?? 0
});
}
AddGroupToFormGroupContents(context, TagHelper.AspFor.Name, html, order);
output.SuppressOutput();
}
protected virtual string GetFormInputGroupAsHtml(TagHelperContext context, TagHelperOutput output)
{
var selectTag = GetSelectTag(context);
var selectAsHtml = RenderTagHelperOutput(selectTag, _encoder);
var label = GetLabelAsHtml(selectTag);
return GetContent(label, selectAsHtml);
}
protected virtual string GetContent(string label, string inputHtml)
{
@ -63,9 +58,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
Items = TagHelper.AspItems,
ViewContext = TagHelper.ViewContext
};
var attributes = new TagHelperAttributeList { new TagHelperAttribute("class", "form-control") };
var inputTagHelperOutput = GetInnerTagHelper(attributes, context,selectTagHelper, "select", TagMode.StartTagAndEndTag); ;
var inputTagHelperOutput = GetInnerTagHelper(new TagHelperAttributeList(), context,selectTagHelper, "select", TagMode.StartTagAndEndTag); ;
inputTagHelperOutput.Attributes.Add("class", "form-control");
@ -80,16 +74,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
return "";
}
var label = GetLabelText();
var idAttr = selectTag.Attributes.FirstOrDefault(a => a.Name == "id");
var idAttrAsString = "";
if (idAttr != null)
{
idAttrAsString = "for=\"" + idAttr.Value + "\"";
}
return "<label " + idAttrAsString + ">" + _localizer[label] + "</label>";
return "<label " + GetIdAttributeAsString(selectTag) + ">" + _localizer[GetLabelText()] + "</label>";
}
protected virtual string GetLabelText()

Loading…
Cancel
Save