|
|
|
@ -27,27 +27,39 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form |
|
|
|
|
|
|
|
public override void Process(TagHelperContext context, TagHelperOutput output) |
|
|
|
{ |
|
|
|
var inputTag = GetInputTag(context); |
|
|
|
var inputHtml = RenderTagHelperOutput(inputTag, _encoder); |
|
|
|
var isCheckbox = IsInputCheckbox(inputTag.Attributes); |
|
|
|
var label = GetLabelAsHtml(inputTag, isCheckbox); |
|
|
|
var html = GetFormInputGroupAsHtml(context, output); |
|
|
|
|
|
|
|
var order = GetInputOrder(); |
|
|
|
|
|
|
|
var content = GetContent(label, inputHtml, isCheckbox); |
|
|
|
AddGroupToFormGroupContents(GetFormGroupContentsList(context), html, order); |
|
|
|
|
|
|
|
var order = GetAttribute<DisplayOrder>(TagHelper.AspFor.ModelExplorer); |
|
|
|
output.SuppressOutput(); |
|
|
|
} |
|
|
|
|
|
|
|
var list = context.Items["InputGroupContents"] as List<FormGroupContent>; |
|
|
|
protected virtual int GetInputOrder() |
|
|
|
{ |
|
|
|
return GetAttribute<DisplayOrder>(TagHelper.AspFor.ModelExplorer)?.Number ?? 0; |
|
|
|
} |
|
|
|
|
|
|
|
if (list != null && !list.Any(igc =>igc.Html.Contains("id=\"" + TagHelper.AspFor.Name.Replace('.', '_') + "\""))) |
|
|
|
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 = content, |
|
|
|
Order = order?.Number ?? 0 |
|
|
|
Html = html, |
|
|
|
Order = order |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
output.SuppressOutput(); |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string GetContent(string label, string inputHtml, bool isCheckbox) |
|
|
|
@ -59,7 +71,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form |
|
|
|
return "<div class=\"" + (isCheckbox ? "form-check" : "form-group") + "\">" + Environment.NewLine + innerContent + Environment.NewLine + "</div>"; |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual TagHelperOutput GetInputTag(TagHelperContext context) |
|
|
|
protected virtual TagHelperOutput GetInputTag(TagHelperContext context, out bool isCheckbox) |
|
|
|
{ |
|
|
|
var inputTagHelper = new InputTagHelper(_generator) |
|
|
|
{ |
|
|
|
@ -68,9 +80,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form |
|
|
|
}; |
|
|
|
|
|
|
|
var inputTagHelperOutput = GetInnerTagHelper(new TagHelperAttributeList(), context, inputTagHelper, "input"); |
|
|
|
isCheckbox = IsInputCheckbox(inputTagHelperOutput.Attributes); |
|
|
|
|
|
|
|
inputTagHelperOutput.Attributes.Add("class", |
|
|
|
IsInputCheckbox(inputTagHelperOutput.Attributes) ? "form-check-input" : "form-control"); |
|
|
|
inputTagHelperOutput.Attributes.Add("class", isCheckbox ? "form-check-input" : "form-control"); |
|
|
|
|
|
|
|
return inputTagHelperOutput; |
|
|
|
} |
|
|
|
@ -87,25 +99,26 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form |
|
|
|
return ""; |
|
|
|
} |
|
|
|
|
|
|
|
var label = GetLabelText(); |
|
|
|
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); |
|
|
|
var idAttrAsString = ""; |
|
|
|
|
|
|
|
if (idAttr != null) |
|
|
|
{ |
|
|
|
idAttrAsString = "for=\"" + idAttr.Value + "\""; |
|
|
|
} |
|
|
|
|
|
|
|
var label = GetLabelValue(); |
|
|
|
var checkboxClass = isCheckbox ? "class=\"form-check-label\" " : ""; |
|
|
|
|
|
|
|
return "<label " + checkboxClass + idAttrAsString + ">" + _localizer[label] + "</label>"; |
|
|
|
return "<label " + checkboxClass + GetIdAttributeAsString(inputTag) + ">" |
|
|
|
+ _localizer[label] + |
|
|
|
"</label>"; |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual string GetLabelText() |
|
|
|
protected virtual string GetLabelValue() |
|
|
|
{ |
|
|
|
return string.IsNullOrEmpty(TagHelper.Label) ? |
|
|
|
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 + "\"" : ""; |
|
|
|
} |
|
|
|
} |
|
|
|
} |