Browse Source

Update AbpDynamicformTagHelperService.cs

pull/15806/head
Salih 4 years ago
parent
commit
a8878a1e01
  1. 74
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs

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

@ -14,6 +14,7 @@ using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
@ -144,6 +145,10 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
{
await ProcessSelectGroupAsync(context, output, model);
}
else if (IsDateGroup(context, model))
{
await ProcessDateGroupAsync(context, output, model);
}
else
{
await ProcessInputGroupAsync(context, output, model);
@ -151,6 +156,61 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
}
}
private async Task ProcessDateGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model)
{
var abpDateTagHelper = GetDateGroupTagHelper(context, output, model);
await abpDateTagHelper.RenderAsync(new TagHelperAttributeList(), context, _htmlEncoder, "div", TagMode.StartTagAndEndTag);
}
private AbpTagHelper GetDateGroupTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model)
{
return IsDateRangeGroup(model.ModelExplorer)
? GetAbpDateRangeInputTagHelper(context, output, model)
: GetAbpDateInputTagHelper(model);
}
private AbpTagHelper GetAbpDateInputTagHelper(ModelExpression model)
{
var abpDateInputTagHelper = _serviceProvider.GetRequiredService<AbpDatePickerTagHelper>();
abpDateInputTagHelper.AspFor = model;
abpDateInputTagHelper.ViewContext = TagHelper.ViewContext;
abpDateInputTagHelper.DisplayRequiredSymbol = TagHelper.RequiredSymbols ?? true;
return abpDateInputTagHelper;
}
private AbpTagHelper GetAbpDateRangeInputTagHelper(TagHelperContext context, TagHelperOutput output,
ModelExpression model)
{
var modelAttribute = model.ModelExplorer.GetAttribute<DateRangePickerAttribute>();
var pickerId = modelAttribute.PickerId;
var otherModel = TagHelper.Model.ModelExplorer.Properties.SingleOrDefault(x =>
x != model.ModelExplorer && x.GetAttribute<DateRangePickerAttribute>()?.PickerId == pickerId);
var otherModelAttribute = otherModel?.GetAttribute<DateRangePickerAttribute>();
var abpDateRangeInputTagHelper = _serviceProvider.GetRequiredService<AbpDateRangePickerTagHelper>();
abpDateRangeInputTagHelper.PickerId = pickerId;
abpDateRangeInputTagHelper.ViewContext = TagHelper.ViewContext;
if (modelAttribute.IsStart)
{
abpDateRangeInputTagHelper.AspForStart = model;
}
if (otherModelAttribute?.IsStart == false)
{
abpDateRangeInputTagHelper.AspForEnd = ModelExplorerToModelExpressionConverter(otherModel);
}
return abpDateRangeInputTagHelper;
}
private bool IsDateRangeGroup(ModelExplorer modelModelExplorer)
{
return modelModelExplorer.GetAttribute<DateRangePickerAttribute>() != null;
}
protected virtual void RemoveFormGroupItemsNotInModel(TagHelperContext context, TagHelperOutput output, List<FormGroupItem> items)
{
var models = GetModels(context, output);
@ -293,6 +353,20 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
{
return IsEnum(model.ModelExplorer) || AreSelectItemsProvided(model.ModelExplorer);
}
protected virtual bool IsDateGroup(TagHelperContext context, ModelExpression model)
{
if(model.ModelExplorer.GetAttribute<DatePickerAttribute>() != null || model.ModelExplorer.GetAttribute<DateRangePickerAttribute>() != null)
{
return true;
}
if(model.Metadata.ModelType == typeof(DateTime) || model.Metadata.ModelType == typeof(DateTime?) || model.Metadata.ModelType == typeof(DateTimeOffset) || model.Metadata.ModelType == typeof(DateTimeOffset?))
{
return true;
}
return false;
}
protected virtual bool IsEnum(ModelExplorer explorer)
{

Loading…
Cancel
Save