Browse Source

Create AbpDatePickerTag.cs

pull/15806/head
Salih 4 years ago
parent
commit
c4b9c1c236
  1. 96
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/DatePicker/AbpDatePickerTag.cs

96
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/DatePicker/AbpDatePickerTag.cs

@ -0,0 +1,96 @@
using System;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Localization.Resources.AbpUi;
using Microsoft.AspNetCore.Mvc.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
using Volo.Abp.Json;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.DatePicker;
[HtmlTargetElement("abp-date-picker", TagStructure = TagStructure.NormalOrSelfClosing)]
public class AbpDatePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDatePickerTagHelper>
{
[CanBeNull]
public ModelExpression AspFor { get; set; }
public AbpDatePickerTagHelper(AbpDatePickerTagHelperService service) : base(service)
{
}
}
public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<AbpDatePickerTagHelper>
{
public AbpDatePickerTagHelperService(IJsonSerializer jsonSerializer, IHtmlGenerator generator, HtmlEncoder encoder, IServiceProvider serviceProvider, IStringLocalizer<AbpUiResource> l, IAbpTagHelperLocalizer tagHelperLocalizer) : base(jsonSerializer, generator, encoder, serviceProvider, l, tagHelperLocalizer)
{
}
protected override TagHelperOutput TagHelperOutput { get; set; }
[CanBeNull]
protected virtual InputTagHelper DateTagHelper { get; set; }
[CanBeNull]
protected virtual TagHelperOutput DateTagHelperOutput { get; set; }
protected override string GetPropertyName()
{
return TagHelper.AspFor?.Name ?? string.Empty;
}
protected override T GetAttributeAndModelExpression<T>(out ModelExpression modelExpression)
{
modelExpression = TagHelper.AspFor;
return modelExpression?.ModelExplorer.GetAttribute<T>();
}
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
if(TagHelper.AspFor != null)
{
DateTagHelper = new InputTagHelper(Generator) {
InputTypeName = "hidden", ViewContext = TagHelper.ViewContext, For = TagHelper.AspFor,
};
var attributes = new TagHelperAttributeList { { "data-date", "true" }, { "type", "hidden" } };
DateTagHelperOutput = await DateTagHelper.ProcessAndGetOutputAsync(attributes, context, "input");
}
await base.ProcessAsync(context, output);
}
protected override int GetOrder()
{
return TagHelper.AspFor?.Metadata.Order ?? 0;
}
protected override void AddBaseTagAttributes(TagHelperAttributeList attributes)
{
if(TagHelper.AspFor != null && TagHelper.AspFor.Model != null && SupportedInputTypes.TryGetValue(TagHelper.AspFor.Metadata.ModelType, out var convertFunc))
{
attributes.Add("data-date", convertFunc(TagHelper.AspFor.Model));
}
}
protected override ModelExpression GetModelExpression()
{
return TagHelper.AspFor;
}
protected async override Task<string> GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output)
{
return DateTagHelper != null ? await GetValidationAsHtmlByInputAsync(context, output, DateTagHelper) : string.Empty;
}
protected override string GetExtraInputHtml(TagHelperContext context, TagHelperOutput output)
{
return DateTagHelperOutput?.Render(Encoder);
}
}
Loading…
Cancel
Save