Browse Source

Form Tag Helpers Refactoring

pull/272/head
yekalkan 9 years ago
parent
commit
6e69fe71a2
  1. 2
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs
  2. 31
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs
  3. 4
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  4. 4
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
  5. 2
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormGroupContent.cs
  6. 4
      test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml

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

@ -12,6 +12,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers
public abstract class AbpTagHelperService<TTagHelper> : IAbpTagHelperService<TTagHelper>
where TTagHelper : TagHelper
{
protected const string FormGroupContents = "FormGroupContents";
public TTagHelper TagHelper { get; set; }
public virtual int Order { get; }

31
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs

@ -25,23 +25,37 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
var list = new List<InputGroupContent>();
context.Items.Add("InputGroupContents", list);
output.TagName = "form";
output.Attributes.Add("method", "post");
output.Attributes.Add("action", "#");
var list = InitilizeFormGroupContentsContext(context);
await output.GetChildContentAsync();
ProcessFields(context, output);
SetContent(output,list);
}
protected virtual void SetContent(TagHelperOutput output, List<FormGroupContent> list)
{
foreach (var itemConfig in list.OrderBy(o => o.Order))
{
output.PostContent.SetHtmlContent(output.PostContent.GetContent() + itemConfig.Html);
}
}
protected virtual void SetFormAttributes(TagHelperOutput output)
{
output.TagName = "form";
output.Attributes.Add("method", "post");
output.Attributes.Add("action", "#");
}
protected virtual List<FormGroupContent> InitilizeFormGroupContentsContext(TagHelperContext context)
{
var list = new List<FormGroupContent>();
context.Items.Add(FormGroupContents, list);
return list;
}
protected virtual void ProcessFields(TagHelperContext context, TagHelperOutput output)
{
var models = GetModels(context, output);
@ -87,6 +101,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
if (IsCsharpClassOrPrimitive(model.ModelType))
{
list.Add(ModelExplorerToModelExpressionConverter(model));
return list;
}

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

@ -36,11 +36,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
var order = GetAttribute<DisplayOrder>(TagHelper.AspFor.ModelExplorer);
var list = context.Items["InputGroupContents"] as List<InputGroupContent>;
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 InputGroupContent
list.Add(new FormGroupContent
{
Html = content,
Order = order?.Number ?? 0

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

@ -32,11 +32,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
var content = GetContent(labelAsHtml,seelctAsHtml);
var order = GetAttribute<DisplayOrder>(TagHelper.AspFor.ModelExplorer);
var list = context.Items["InputGroupContents"] as List<InputGroupContent>;
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 InputGroupContent
list.Add(new FormGroupContent
{
Html = content,
Order = order?.Number ?? 0

2
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/InputGroupContent.cs → src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormGroupContent.cs

@ -1,6 +1,6 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
{
public class InputGroupContent
public class FormGroupContent
{
public string Html { get; set; }

4
test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Forms.cshtml

@ -20,8 +20,8 @@
</div>
<div class="code-area">
<pre>
&lt;abp-dynamic-form model=&quot;Model.Person&quot; &gt;
&lt;/form&gt;
&lt;abp-dynamic-form asp-model=&quot;Model.Ahmet&quot; &gt;
&lt;/abp-dynamic-form&gt;
</pre>
</div>
</div>

Loading…
Cancel
Save