Browse Source

Enable nullable annotations for Volo.Abp.AspNetCore.Mvc.UI.Bootstrap

pull/17094/head
liangshiwei 3 years ago
parent
commit
46e71cb24e
  1. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Microsoft/AspNetCore/Razor/TagHelpers/AbpTagHelperAttributeListExtensions.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelper.cs
  3. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperLocalizer.cs
  4. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs
  5. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelper.cs
  6. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/BreadcrumbItem.cs
  7. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs
  8. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs
  9. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelper.cs
  10. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/IButtonTagHelperBase.cs
  11. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelper.cs
  12. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs
  13. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelper.cs
  14. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs
  15. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelper.cs
  16. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs
  17. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelper.cs
  18. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelper.cs
  19. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelper.cs
  20. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelper.cs
  21. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelper.cs
  22. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/ModelExplorerExtensions.cs
  23. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperContextExtensions.cs
  24. 20
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs
  25. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs
  26. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpIdNameTagHelper.cs
  27. 16
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs
  28. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  29. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelper.cs
  30. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs
  31. 28
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs
  32. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
  33. 32
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs
  34. 48
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs
  35. 22
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerOptions.cs
  36. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerRange.cs
  37. 3
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelper.cs
  38. 14
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelperService.cs
  39. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelper.cs
  40. 18
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelperService.cs
  41. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/DatePickerOptionsAttribute.cs
  42. 29
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/IAbpDatePickerOptions.cs
  43. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormGroupItem.cs
  44. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/SelectItems.cs
  45. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/IAbpTagHelperLocalizer.cs
  46. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/ListGroup/AbpListGroupItemTagHelper.cs
  47. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelper.cs
  48. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/AbpNavbarToggleTagHelper.cs
  49. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/NavItem.cs
  50. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/AbpPaginationTagHelper.cs
  51. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/PageItem.cs
  52. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/PagerModel.cs
  53. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelper.cs
  54. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs
  55. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelper.cs
  56. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelper.cs
  57. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs
  58. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelper.cs
  59. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs
  60. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelper.cs
  61. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/TabItem.cs
  62. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelper.cs
  63. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs
  64. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj
  65. 2
      framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpDashboardOptionsProvider.cs

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Microsoft/AspNetCore/Razor/TagHelpers/AbpTagHelperAttributeListExtensions.cs

@ -22,7 +22,7 @@ public static class AbpTagHelperAttributeListExtensions
} }
else else
{ {
var existingClasses = classAttribute.Value.ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); var existingClasses = classAttribute.Value.ToString()!.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
existingClasses.AddIfNotContains(className); existingClasses.AddIfNotContains(className);
attributes.SetAttribute("class", string.Join(" ", existingClasses)); attributes.SetAttribute("class", string.Join(" ", existingClasses));
} }
@ -41,7 +41,7 @@ public static class AbpTagHelperAttributeListExtensions
return; return;
} }
var classList = classAttribute.Value.ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); var classList = classAttribute.Value.ToString()!.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
classList.RemoveAll(c => c == className); classList.RemoveAll(c => c == className);
attributes.SetAttribute("class", classList.JoinAsString(" ")); attributes.SetAttribute("class", classList.JoinAsString(" "));

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

@ -23,7 +23,7 @@ public abstract class AbpTagHelper<TTagHelper, TService> : AbpTagHelper
[HtmlAttributeNotBound] [HtmlAttributeNotBound]
[ViewContext] [ViewContext]
public ViewContext ViewContext { get; set; } public ViewContext ViewContext { get; set; } = default!;
protected AbpTagHelper(TService service) protected AbpTagHelper(TService service)
{ {

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperLocalizer.cs

@ -27,12 +27,12 @@ public class AbpTagHelperLocalizer : IAbpTagHelperLocalizer
: localizer[text].Value; : localizer[text].Value;
} }
public IStringLocalizer GetLocalizerOrNull(ModelExplorer explorer) public IStringLocalizer? GetLocalizerOrNull(ModelExplorer explorer)
{ {
return GetLocalizerOrNull(explorer.Container.ModelType.Assembly); return GetLocalizerOrNull(explorer.Container.ModelType.Assembly);
} }
public IStringLocalizer GetLocalizerOrNull(Assembly assembly) public IStringLocalizer? GetLocalizerOrNull(Assembly assembly)
{ {
var resourceType = GetResourceType(assembly); var resourceType = GetResourceType(assembly);
return resourceType == null return resourceType == null
@ -40,7 +40,7 @@ public class AbpTagHelperLocalizer : IAbpTagHelperLocalizer
: _stringLocalizerFactory.Create(resourceType); : _stringLocalizerFactory.Create(resourceType);
} }
private Type GetResourceType(Assembly assembly) private Type? GetResourceType(Assembly assembly)
{ {
return _options return _options
.AssemblyResources .AssemblyResources

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

@ -23,7 +23,7 @@ public abstract class AbpTagHelperService<TTagHelper> : IAbpTagHelperService<TTa
protected const string AbpTabItemSelectedPlaceholder = "{_Tab_Selected_Placeholder_}"; protected const string AbpTabItemSelectedPlaceholder = "{_Tab_Selected_Placeholder_}";
protected const string AbpAccordionParentIdPlaceholder = "{_Parent_Accordion_Id_}"; protected const string AbpAccordionParentIdPlaceholder = "{_Parent_Accordion_Id_}";
public TTagHelper TagHelper { get; internal set; } public TTagHelper TagHelper { get; internal set; } = default!;
public virtual int Order { get; } public virtual int Order { get; }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelper.cs

@ -2,9 +2,9 @@
public class AbpBreadcrumbItemTagHelper : AbpTagHelper<AbpBreadcrumbItemTagHelper, AbpBreadcrumbItemTagHelperService> public class AbpBreadcrumbItemTagHelper : AbpTagHelper<AbpBreadcrumbItemTagHelper, AbpBreadcrumbItemTagHelperService>
{ {
public string Href { get; set; } public string? Href { get; set; }
public string Title { get; set; } public string Title { get; set; } = default!;
public bool Active { get; set; } public bool Active { get; set; }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/BreadcrumbItem.cs

@ -2,7 +2,7 @@
public class BreadcrumbItem public class BreadcrumbItem
{ {
public string Html { get; set; } public string Html { get; set; } = default!;
public bool Active { get; set; } public bool Active { get; set; }
} }

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs

@ -9,11 +9,11 @@ public class AbpButtonTagHelper : AbpTagHelper<AbpButtonTagHelper, AbpButtonTagH
public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; public AbpButtonSize Size { get; set; } = AbpButtonSize.Default;
public string BusyText { get; set; } public string? BusyText { get; set; }
public string Text { get; set; } public string? Text { get; set; }
public string Icon { get; set; } public string? Icon { get; set; }
public bool? Disabled { get; set; } public bool? Disabled { get; set; }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs

@ -57,7 +57,7 @@ public abstract class AbpButtonTagHelperServiceBase<TTagHelper> : AbpTagHelperSe
case FontIconType.FontAwesome: case FontIconType.FontAwesome:
return "fa fa-" + TagHelper.Icon; return "fa fa-" + TagHelper.Icon;
default: default:
return TagHelper.Icon; return TagHelper.Icon!;
} }
} }
@ -69,7 +69,7 @@ public abstract class AbpButtonTagHelperServiceBase<TTagHelper> : AbpTagHelperSe
} }
var span = new TagBuilder("span"); var span = new TagBuilder("span");
span.InnerHtml.AppendHtml(TagHelper.Text); span.InnerHtml.AppendHtml(TagHelper.Text!);
output.Content.AppendHtml(span); output.Content.AppendHtml(span);
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelper.cs

@ -11,9 +11,9 @@ public class AbpLinkButtonTagHelper : AbpTagHelper<AbpLinkButtonTagHelper, AbpLi
public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; public AbpButtonSize Size { get; set; } = AbpButtonSize.Default;
public string Text { get; set; } public string? Text { get; set; }
public string Icon { get; set; } public string? Icon { get; set; }
public bool? Disabled { get; set; } public bool? Disabled { get; set; }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/IButtonTagHelperBase.cs

@ -6,9 +6,9 @@ public interface IButtonTagHelperBase
AbpButtonSize Size { get; } AbpButtonSize Size { get; }
string Text { get; } string? Text { get; }
string Icon { get; } string? Icon { get; }
bool? Disabled { get; } bool? Disabled { get; }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelper.cs

@ -2,9 +2,9 @@
public class AbpCardBodyTagHelper : AbpTagHelper<AbpCardBodyTagHelper, AbpCardBodyTagHelperService> public class AbpCardBodyTagHelper : AbpTagHelper<AbpCardBodyTagHelper, AbpCardBodyTagHelperService>
{ {
public string Title { get; set; } public string? Title { get; set; }
public string Subtitle { get; set; } public string? Subtitle { get; set; }
public AbpCardBodyTagHelper(AbpCardBodyTagHelperService tagHelperService) public AbpCardBodyTagHelper(AbpCardBodyTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs

@ -22,7 +22,7 @@ public class AbpCardBodyTagHelperService : AbpTagHelperService<AbpCardBodyTagHel
{ {
var cardTitle = new TagBuilder(AbpCardTitleTagHelper.DefaultHeading.ToHtmlTag()); var cardTitle = new TagBuilder(AbpCardTitleTagHelper.DefaultHeading.ToHtmlTag());
cardTitle.AddCssClass("card-title"); cardTitle.AddCssClass("card-title");
cardTitle.InnerHtml.AppendHtml(TagHelper.Title); cardTitle.InnerHtml.AppendHtml(TagHelper.Title!);
output.PreContent.AppendHtml(cardTitle); output.PreContent.AppendHtml(cardTitle);
} }
} }
@ -33,7 +33,7 @@ public class AbpCardBodyTagHelperService : AbpTagHelperService<AbpCardBodyTagHel
{ {
var cardSubtitle = new TagBuilder(AbpCardSubtitleTagHelper.DefaultHeading.ToHtmlTag()); var cardSubtitle = new TagBuilder(AbpCardSubtitleTagHelper.DefaultHeading.ToHtmlTag());
cardSubtitle.AddCssClass("card-subtitle text-muted mb-2"); cardSubtitle.AddCssClass("card-subtitle text-muted mb-2");
cardSubtitle.InnerHtml.AppendHtml(TagHelper.Subtitle); cardSubtitle.InnerHtml.AppendHtml(TagHelper.Subtitle!);
output.PreContent.AppendHtml(cardSubtitle); output.PreContent.AppendHtml(cardSubtitle);
} }
} }

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelper.cs

@ -4,13 +4,13 @@ public class AbpCarouselItemTagHelper : AbpTagHelper<AbpCarouselItemTagHelper, A
{ {
public bool? Active { get; set; } public bool? Active { get; set; }
public string Src { get; set; } public string Src { get; set; } = default!;
public string Alt { get; set; } public string Alt { get; set; } = default!;
public string CaptionTitle { get; set; } public string? CaptionTitle { get; set; }
public string Caption { get; set; } public string? Caption { get; set; }
public AbpCarouselItemTagHelper(AbpCarouselItemTagHelperService tagHelperService) public AbpCarouselItemTagHelper(AbpCarouselItemTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs

@ -66,10 +66,10 @@ public class AbpCarouselItemTagHelperService : AbpTagHelperService<AbpCarouselIt
} }
var title = new TagBuilder("h5"); var title = new TagBuilder("h5");
title.InnerHtml.AppendHtml(TagHelper.CaptionTitle); title.InnerHtml.AppendHtml(TagHelper.CaptionTitle!);
var caption = new TagBuilder("p"); var caption = new TagBuilder("p");
caption.InnerHtml.AppendHtml(TagHelper.Caption); caption.InnerHtml.AppendHtml(TagHelper.Caption!);
var wrapper = new TagBuilder("div"); var wrapper = new TagBuilder("div");
wrapper.AddCssClass("carousel-caption d-none d-md-block"); wrapper.AddCssClass("carousel-caption d-none d-md-block");

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelper.cs

@ -2,7 +2,7 @@
public class AbpCarouselTagHelper : AbpTagHelper<AbpCarouselTagHelper, AbpCarouselTagHelperService> public class AbpCarouselTagHelper : AbpTagHelper<AbpCarouselTagHelper, AbpCarouselTagHelperService>
{ {
public string Id { get; set; } public string? Id { get; set; }
public bool? Crossfade { get; set; } public bool? Crossfade { get; set; }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs

@ -138,7 +138,7 @@ public class AbpCarouselTagHelperService : AbpTagHelperService<AbpCarouselTagHel
{ {
if (!itemList.Any(it => it.Active) && itemList.Count > 0) if (!itemList.Any(it => it.Active) && itemList.Count > 0)
{ {
itemList.FirstOrDefault().Active = true; itemList.FirstOrDefault()!.Active = true;
} }
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelper.cs

@ -2,9 +2,9 @@
public class AbpAccordionItemTagHelper : AbpTagHelper<AbpAccordionItemTagHelper, AbpAccordionItemTagHelperService> public class AbpAccordionItemTagHelper : AbpTagHelper<AbpAccordionItemTagHelper, AbpAccordionItemTagHelperService>
{ {
public string Id { get; set; } public string? Id { get; set; }
public string Title { get; set; } public string Title { get; set; } = default!;
public bool? Active { get; set; } public bool? Active { get; set; }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelper.cs

@ -2,7 +2,7 @@
public class AbpAccordionTagHelper : AbpTagHelper<AbpAccordionTagHelper, AbpAccordionTagHelperService> public class AbpAccordionTagHelper : AbpTagHelper<AbpAccordionTagHelper, AbpAccordionTagHelperService>
{ {
public string Id { get; set; } public string? Id { get; set; }
public AbpAccordionTagHelper(AbpAccordionTagHelperService tagHelperService) public AbpAccordionTagHelper(AbpAccordionTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelper.cs

@ -2,7 +2,7 @@
public class AbpCollapseBodyTagHelper : AbpTagHelper<AbpCollapseBodyTagHelper, AbpCollapseBodyTagHelperService> public class AbpCollapseBodyTagHelper : AbpTagHelper<AbpCollapseBodyTagHelper, AbpCollapseBodyTagHelperService>
{ {
public string Id { get; set; } public string? Id { get; set; }
public bool? Multi { get; set; } public bool? Multi { get; set; }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelper.cs

@ -8,7 +8,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse;
public class AbpCollapseButtonTagHelper : AbpTagHelper<AbpCollapseButtonTagHelper, AbpCollapseButtonTagHelperService> public class AbpCollapseButtonTagHelper : AbpTagHelper<AbpCollapseButtonTagHelper, AbpCollapseButtonTagHelperService>
{ {
[HtmlAttributeName("abp-collapse-id")] [HtmlAttributeName("abp-collapse-id")]
public string BodyId { get; set; } public string BodyId { get; set; } = default!;
public AbpCollapseButtonTagHelper(AbpCollapseButtonTagHelperService tagHelperService) public AbpCollapseButtonTagHelper(AbpCollapseButtonTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelper.cs

@ -4,7 +4,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown;
public class AbpDropdownButtonTagHelper : AbpTagHelper<AbpDropdownButtonTagHelper, AbpDropdownButtonTagHelperService> public class AbpDropdownButtonTagHelper : AbpTagHelper<AbpDropdownButtonTagHelper, AbpDropdownButtonTagHelperService>
{ {
public string Text { get; set; } public string? Text { get; set; }
public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; public AbpButtonSize Size { get; set; } = AbpButtonSize.Default;
@ -12,7 +12,7 @@ public class AbpDropdownButtonTagHelper : AbpTagHelper<AbpDropdownButtonTagHelpe
public AbpButtonType ButtonType { get; set; } = AbpButtonType.Default; public AbpButtonType ButtonType { get; set; } = AbpButtonType.Default;
public string Icon { get; set; } public string? Icon { get; set; }
public FontIconType IconType { get; set; } = FontIconType.FontAwesome; public FontIconType IconType { get; set; } = FontIconType.FontAwesome;

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/ModelExplorerExtensions.cs

@ -7,9 +7,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
public static class ModelExplorerExtensions public static class ModelExplorerExtensions
{ {
public static T GetAttribute<T>(this ModelExplorer property) where T : Attribute public static T? GetAttribute<T>(this ModelExplorer property) where T : Attribute
{ {
return property?.Metadata?.ContainerType?.GetTypeInfo()?.GetProperty(property.Metadata.PropertyName)?.GetCustomAttribute<T>(); return property?.Metadata?.ContainerType?.GetTypeInfo()?.GetProperty(property.Metadata.PropertyName!)?.GetCustomAttribute<T>();
} }
public static int GetDisplayOrder(this ModelExplorer explorer) public static int GetDisplayOrder(this ModelExplorer explorer)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperContextExtensions.cs

@ -11,7 +11,7 @@ public static class TagHelperContextExtensions
{ {
if (!context.Items.ContainsKey(key)) if (!context.Items.ContainsKey(key))
{ {
return default(T); return default(T)!;
} }
return (T)context.Items[key]; return (T)context.Items[key];

20
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs

@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
public class AbpDynamicFormTagHelper : AbpTagHelper<AbpDynamicFormTagHelper, AbpDynamicFormTagHelperService> public class AbpDynamicFormTagHelper : AbpTagHelper<AbpDynamicFormTagHelper, AbpDynamicFormTagHelperService>
{ {
[HtmlAttributeName("abp-model")] [HtmlAttributeName("abp-model")]
public ModelExpression Model { get; set; } public ModelExpression Model { get; set; } = default!;
[HtmlAttributeName("column-size")] [HtmlAttributeName("column-size")]
public ColumnSize ColumnSize { get; set; } public ColumnSize ColumnSize { get; set; }
@ -23,7 +23,7 @@ public class AbpDynamicFormTagHelper : AbpTagHelper<AbpDynamicFormTagHelper, Abp
#region MvcFormTagHelperAttiributes #region MvcFormTagHelperAttiributes
private IDictionary<string, string> _routeValues; private IDictionary<string, string>? _routeValues;
private const string ActionAttributeName = "asp-action"; private const string ActionAttributeName = "asp-action";
private const string AreaAttributeName = "asp-area"; private const string AreaAttributeName = "asp-area";
@ -36,28 +36,28 @@ public class AbpDynamicFormTagHelper : AbpTagHelper<AbpDynamicFormTagHelper, Abp
private const string RouteValuesPrefix = "asp-route-"; private const string RouteValuesPrefix = "asp-route-";
[HtmlAttributeName(ActionAttributeName)] [HtmlAttributeName(ActionAttributeName)]
public string Action { get; set; } public string Action { get; set; } = default!;
[HtmlAttributeName(ControllerAttributeName)] [HtmlAttributeName(ControllerAttributeName)]
public string Controller { get; set; } public string Controller { get; set; } = default!;
[HtmlAttributeName(AreaAttributeName)] [HtmlAttributeName(AreaAttributeName)]
public string Area { get; set; } public string Area { get; set; } = default!;
[HtmlAttributeName(PageAttributeName)] [HtmlAttributeName(PageAttributeName)]
public string Page { get; set; } public string Page { get; set; } = default!;
[HtmlAttributeName(PageHandlerAttributeName)] [HtmlAttributeName(PageHandlerAttributeName)]
public string PageHandler { get; set; } public string PageHandler { get; set; } = default!;
[HtmlAttributeName(FragmentAttributeName)] [HtmlAttributeName(FragmentAttributeName)]
public string Fragment { get; set; } public string Fragment { get; set; } = default!;
[HtmlAttributeName(RouteAttributeName)] [HtmlAttributeName(RouteAttributeName)]
public string Route { get; set; } public string Route { get; set; } = default!;
[EditorBrowsable(EditorBrowsableState.Never)] [EditorBrowsable(EditorBrowsableState.Never)]
public string Method { get; set; } public string Method { get; set; } = default!;
[HtmlAttributeName(RouteValuesDictionaryName, DictionaryAttributePrefix = RouteValuesPrefix)] [HtmlAttributeName(RouteValuesDictionaryName, DictionaryAttributePrefix = RouteValuesPrefix)]
public IDictionary<string, string> RouteValues public IDictionary<string, string> RouteValues

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

@ -201,7 +201,7 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
private AbpTagHelper GetAbpDateRangeInputTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model) private AbpTagHelper GetAbpDateRangeInputTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model)
{ {
var modelAttribute = model.ModelExplorer.GetAttribute<DateRangePickerAttribute>(); var modelAttribute = model.ModelExplorer.GetAttribute<DateRangePickerAttribute>()!;
var pickerId = modelAttribute.PickerId; var pickerId = modelAttribute.PickerId;
@ -214,16 +214,16 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
abpDateRangeInputTagHelper.AspForStart = model; abpDateRangeInputTagHelper.AspForStart = model;
var otherModelExists = TryToGetOtherDateModel(model, pickerId, out var otherModel); var otherModelExists = TryToGetOtherDateModel(model, pickerId, out var otherModel);
if (otherModelExists && otherModel.GetAttribute<DateRangePickerAttribute>().IsEnd) if (otherModelExists && otherModel!.GetAttribute<DateRangePickerAttribute>()!.IsEnd)
{ {
abpDateRangeInputTagHelper.AspForEnd = ModelExplorerToModelExpressionConverter(otherModel); abpDateRangeInputTagHelper.AspForEnd = ModelExplorerToModelExpressionConverter(otherModel!);
} }
} }
return abpDateRangeInputTagHelper; return abpDateRangeInputTagHelper;
} }
private bool TryToGetOtherDateModel(ModelExpression model, string pickerId, out ModelExplorer otherModel) private bool TryToGetOtherDateModel(ModelExpression model, string pickerId, out ModelExplorer? otherModel)
{ {
otherModel = TagHelper.Model.ModelExplorer.Properties.SingleOrDefault(x => x != model.ModelExplorer && x.GetAttribute<DateRangePickerAttribute>()?.PickerId == pickerId); otherModel = TagHelper.Model.ModelExplorer.Properties.SingleOrDefault(x => x != model.ModelExplorer && x.GetAttribute<DateRangePickerAttribute>()?.PickerId == pickerId);
return otherModel != null; return otherModel != null;
@ -266,7 +266,7 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
protected virtual AbpTagHelper GetAbpRadioInputTagHelper(ModelExpression model) protected virtual AbpTagHelper GetAbpRadioInputTagHelper(ModelExpression model)
{ {
var radioButtonAttribute = model.ModelExplorer.GetAttribute<AbpRadioButton>(); var radioButtonAttribute = model.ModelExplorer.GetAttribute<AbpRadioButton>()!;
var abpRadioInputTagHelper = _serviceProvider.GetRequiredService<AbpRadioInputTagHelper>(); var abpRadioInputTagHelper = _serviceProvider.GetRequiredService<AbpRadioInputTagHelper>();
abpRadioInputTagHelper.AspFor = model; abpRadioInputTagHelper.AspFor = model;
abpRadioInputTagHelper.AspItems = null; abpRadioInputTagHelper.AspItems = null;
@ -356,7 +356,7 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService<AbpDynamicForm
return type.ToString().StartsWith("System.Collections.Generic.IEnumerable`") || type.ToString().StartsWith("System.Collections.Generic.List`"); return type.ToString().StartsWith("System.Collections.Generic.IEnumerable`") || type.ToString().StartsWith("System.Collections.Generic.List`");
} }
protected virtual bool IsCsharpClassOrPrimitive(Type type) protected virtual bool IsCsharpClassOrPrimitive(Type? type)
{ {
if (type == null) if (type == null)
{ {

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpIdNameTagHelper.cs

@ -18,7 +18,7 @@ public class AbpIdNameTagHelper : AbpTagHelper
public override int Order => -1000 - 1; public override int Order => -1000 - 1;
[HtmlAttributeName("abp-id-name")] [HtmlAttributeName("abp-id-name")]
public ModelExpression IdNameFor { get; set; } public ModelExpression? IdNameFor { get; set; }
private readonly MvcViewOptions _mvcViewOptions; private readonly MvcViewOptions _mvcViewOptions;

16
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs

@ -6,11 +6,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
public class AbpInputTagHelper : AbpTagHelper<AbpInputTagHelper, AbpInputTagHelperService> public class AbpInputTagHelper : AbpTagHelper<AbpInputTagHelper, AbpInputTagHelperService>
{ {
public ModelExpression AspFor { get; set; } public ModelExpression AspFor { get; set; } = default!;
public string Label { get; set; } public string? Label { get; set; }
public string LabelTooltip { get; set; } public string? LabelTooltip { get; set; }
public string LabelTooltipIcon { get; set; } = "bi-info-circle"; public string LabelTooltipIcon { get; set; } = "bi-info-circle";
@ -19,7 +19,7 @@ public class AbpInputTagHelper : AbpTagHelper<AbpInputTagHelper, AbpInputTagHelp
public bool LabelTooltipHtml { get; set; } = false; public bool LabelTooltipHtml { get; set; } = false;
[HtmlAttributeName("info")] [HtmlAttributeName("info")]
public string InfoText { get; set; } public string? InfoText { get; set; }
[HtmlAttributeName("disabled")] [HtmlAttributeName("disabled")]
public bool IsDisabled { get; set; } = false; public bool IsDisabled { get; set; } = false;
@ -30,7 +30,7 @@ public class AbpInputTagHelper : AbpTagHelper<AbpInputTagHelper, AbpInputTagHelp
public bool AutoFocus { get; set; } public bool AutoFocus { get; set; }
[HtmlAttributeName("type")] [HtmlAttributeName("type")]
public string InputTypeName { get; set; } public string? InputTypeName { get; set; }
public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default; public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default;
@ -38,11 +38,11 @@ public class AbpInputTagHelper : AbpTagHelper<AbpInputTagHelper, AbpInputTagHelp
public bool DisplayRequiredSymbol { get; set; } = true; public bool DisplayRequiredSymbol { get; set; } = true;
[HtmlAttributeName("asp-format")] [HtmlAttributeName("asp-format")]
public string Format { get; set; } public string? Format { get; set; }
public string Name { get; set; } public string? Name { get; set; }
public string Value { get; set; } public string? Value { get; set; }
public bool SuppressLabel { get; set; } public bool SuppressLabel { get; set; }

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

@ -397,7 +397,7 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
} }
} }
protected virtual TextArea TryGetTextAreaAttribute(TagHelperOutput output) protected virtual TextArea? TryGetTextAreaAttribute(TagHelperOutput output)
{ {
var textAreaAttribute = TagHelper.AspFor.ModelExplorer.GetAttribute<TextArea>(); var textAreaAttribute = TagHelper.AspFor.ModelExplorer.GetAttribute<TextArea>();
@ -479,14 +479,14 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
protected virtual bool IsOutputHidden(TagHelperOutput inputTag) protected virtual bool IsOutputHidden(TagHelperOutput inputTag)
{ {
return inputTag.Attributes.Any(a => a.Name.ToLowerInvariant() == "type" && a.Value.ToString().ToLowerInvariant() == "hidden"); return inputTag.Attributes.Any(a => a.Name.ToLowerInvariant() == "type" && a.Value.ToString()!.ToLowerInvariant() == "hidden");
} }
protected virtual string GetIdAttributeValue(TagHelperOutput inputTag) protected virtual string GetIdAttributeValue(TagHelperOutput inputTag)
{ {
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
return idAttr != null ? idAttr.Value.ToString() : string.Empty; return idAttr != null ? idAttr.Value.ToString()! : string.Empty;
} }
protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag) protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag)

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelper.cs

@ -8,15 +8,15 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
[HtmlTargetElement("abp-radio")] [HtmlTargetElement("abp-radio")]
public class AbpRadioInputTagHelper : AbpTagHelper<AbpRadioInputTagHelper, AbpRadioInputTagHelperService> public class AbpRadioInputTagHelper : AbpTagHelper<AbpRadioInputTagHelper, AbpRadioInputTagHelperService>
{ {
public ModelExpression AspFor { get; set; } public ModelExpression AspFor { get; set; } = default!;
public string Label { get; set; } public string? Label { get; set; }
public bool? Inline { get; set; } public bool? Inline { get; set; }
public bool? Disabled { get; set; } public bool? Disabled { get; set; }
public IEnumerable<SelectListItem> AspItems { get; set; } public IEnumerable<SelectListItem>? AspItems { get; set; }
public AbpRadioInputTagHelper(AbpRadioInputTagHelperService tagHelperService) public AbpRadioInputTagHelper(AbpRadioInputTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs

@ -113,12 +113,12 @@ public class AbpRadioInputTagHelperService : AbpTagHelperService<AbpRadioInputTa
var localizer = _tagHelperLocalizer.GetLocalizerOrNull(explorer); var localizer = _tagHelperLocalizer.GetLocalizerOrNull(explorer);
var selectItems = explorer.Metadata.IsEnum ? explorer.ModelType.GetTypeInfo().GetMembers(BindingFlags.Public | BindingFlags.Static) var selectItems = explorer.Metadata.IsEnum ? explorer.ModelType.GetTypeInfo().GetMembers(BindingFlags.Public | BindingFlags.Static)
.Select((t, i) => new SelectListItem { Value = i.ToString(), Text = GetLocalizedPropertyName(localizer, explorer.ModelType, t.Name) }).ToList() : null; .Select((t, i) => new SelectListItem { Value = i.ToString(), Text = GetLocalizedPropertyName(localizer, explorer.ModelType, t.Name) }).ToList() : new List<SelectListItem>();
return selectItems; return selectItems;
} }
protected virtual string GetLocalizedPropertyName(IStringLocalizer localizer, Type enumType, string propertyName) protected virtual string GetLocalizedPropertyName(IStringLocalizer? localizer, Type enumType, string propertyName)
{ {
if (localizer == null) if (localizer == null)
{ {
@ -159,7 +159,7 @@ public class AbpRadioInputTagHelperService : AbpTagHelperService<AbpRadioInputTa
} }
} }
protected virtual string GetSelectedValue(TagHelperContext context, TagHelperOutput output) protected virtual string? GetSelectedValue(TagHelperContext context, TagHelperOutput output)
{ {
if (TagHelper.AspFor.ModelExplorer.Metadata.IsEnum) if (TagHelper.AspFor.ModelExplorer.Metadata.IsEnum)
{ {

28
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs

@ -8,41 +8,41 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
[OutputElementHint("select")] [OutputElementHint("select")]
public class AbpSelectTagHelper : AbpTagHelper<AbpSelectTagHelper, AbpSelectTagHelperService> public class AbpSelectTagHelper : AbpTagHelper<AbpSelectTagHelper, AbpSelectTagHelperService>
{ {
public ModelExpression AspFor { get; set; } public ModelExpression AspFor { get; set; } = default!;
public string Label { get; set; } public string? Label { get; set; }
public bool SuppressLabel { get; set; } public bool SuppressLabel { get; set; }
public IEnumerable<SelectListItem> AspItems { get; set; } public IEnumerable<SelectListItem>? AspItems { get; set; }
public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default; public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default;
[HtmlAttributeName("info")] [HtmlAttributeName("info")]
public string InfoText { get; set; } public string? InfoText { get; set; }
[HtmlAttributeName("required-symbol")] [HtmlAttributeName("required-symbol")]
public bool DisplayRequiredSymbol { get; set; } = true; public bool DisplayRequiredSymbol { get; set; } = true;
public string AutocompleteApiUrl { get; set; } public string? AutocompleteApiUrl { get; set; }
public string AutocompleteItemsPropertyName { get; set; } public string? AutocompleteItemsPropertyName { get; set; }
public string AutocompleteDisplayPropertyName { get; set; } public string? AutocompleteDisplayPropertyName { get; set; }
public string AutocompleteValuePropertyName { get; set; } public string? AutocompleteValuePropertyName { get; set; }
public string AutocompleteFilterParamName { get; set; } public string? AutocompleteFilterParamName { get; set; }
public string AutocompleteSelectedItemName { get; set; } public string? AutocompleteSelectedItemName { get; set; }
public string AutocompleteSelectedItemValue { get; set; } public string? AutocompleteSelectedItemValue { get; set; }
public string AutocompleteParentSelector { get; set; } public string? AutocompleteParentSelector { get; set; }
public string AllowClear { get; set; } public string? AllowClear { get; set; }
public string Placeholder { get; set; } public string? Placeholder { get; set; }
[HtmlAttributeName("floating-label")] [HtmlAttributeName("floating-label")]

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

@ -266,7 +266,7 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
if (isNullableType) if (isNullableType)
{ {
enumType = Nullable.GetUnderlyingType(explorer.ModelType); enumType = Nullable.GetUnderlyingType(explorer.ModelType)!;
selectItems.Add(new SelectListItem()); selectItems.Add(new SelectListItem());
} }
@ -279,7 +279,7 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
{ {
containerLocalizer, containerLocalizer,
_stringLocalizerFactory.CreateDefaultOrNull() _stringLocalizerFactory.CreateDefaultOrNull()
}); }!);
selectItems.Add(new SelectListItem selectItems.Add(new SelectListItem
{ {
Value = enumValue.ToString(), Value = enumValue.ToString(),
@ -386,7 +386,7 @@ public class AbpSelectTagHelperService : AbpTagHelperService<AbpSelectTagHelper>
{ {
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
return idAttr != null ? idAttr.Value.ToString() : string.Empty; return idAttr != null ? idAttr.Value.ToString()! : string.Empty;
} }
protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag) protected virtual string GetIdAttributeAsString(TagHelperOutput inputTag)

32
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs

@ -11,9 +11,9 @@ public abstract class
{ {
private IAbpDatePickerOptions _abpDatePickerOptionsImplementation; private IAbpDatePickerOptions _abpDatePickerOptionsImplementation;
public string Label { get; set; } public string? Label { get; set; }
public string LabelTooltip { get; set; } public string? LabelTooltip { get; set; }
public string LabelTooltipIcon { get; set; } = "bi-info-circle"; public string LabelTooltipIcon { get; set; } = "bi-info-circle";
@ -22,7 +22,7 @@ public abstract class
public bool LabelTooltipHtml { get; set; } = false; public bool LabelTooltipHtml { get; set; } = false;
[HtmlAttributeName("info")] [HtmlAttributeName("info")]
public string InfoText { get; set; } public string? InfoText { get; set; }
[HtmlAttributeName("disabled")] [HtmlAttributeName("disabled")]
public bool IsDisabled { get; set; } = false; public bool IsDisabled { get; set; } = false;
@ -37,9 +37,9 @@ public abstract class
[HtmlAttributeName("required-symbol")] [HtmlAttributeName("required-symbol")]
public bool DisplayRequiredSymbol { get; set; } = true; public bool DisplayRequiredSymbol { get; set; } = true;
public string Name { get; set; } public string? Name { get; set; }
public string Value { get; set; } public string? Value { get; set; }
public bool SuppressLabel { get; set; } public bool SuppressLabel { get; set; }
@ -53,7 +53,7 @@ public abstract class
_abpDatePickerOptionsImplementation = options; _abpDatePickerOptionsImplementation = options;
} }
public string PickerId { public string? PickerId {
get => _abpDatePickerOptionsImplementation.PickerId; get => _abpDatePickerOptionsImplementation.PickerId;
set => _abpDatePickerOptionsImplementation.PickerId = value; set => _abpDatePickerOptionsImplementation.PickerId = value;
} }
@ -68,7 +68,7 @@ public abstract class
set => _abpDatePickerOptionsImplementation.MaxDate = value; set => _abpDatePickerOptionsImplementation.MaxDate = value;
} }
public object MaxSpan { public object? MaxSpan {
get => _abpDatePickerOptionsImplementation.MaxSpan; get => _abpDatePickerOptionsImplementation.MaxSpan;
set => _abpDatePickerOptionsImplementation.MaxSpan = value; set => _abpDatePickerOptionsImplementation.MaxSpan = value;
} }
@ -113,7 +113,7 @@ public abstract class
set => _abpDatePickerOptionsImplementation.TimePickerSeconds = value; set => _abpDatePickerOptionsImplementation.TimePickerSeconds = value;
} }
public List<AbpDatePickerRange> Ranges { public List<AbpDatePickerRange>? Ranges {
get => _abpDatePickerOptionsImplementation.Ranges; get => _abpDatePickerOptionsImplementation.Ranges;
set => _abpDatePickerOptionsImplementation.Ranges = value; set => _abpDatePickerOptionsImplementation.Ranges = value;
} }
@ -138,27 +138,27 @@ public abstract class
set => _abpDatePickerOptionsImplementation.Drops = value; set => _abpDatePickerOptionsImplementation.Drops = value;
} }
public string ButtonClasses { public string? ButtonClasses {
get => _abpDatePickerOptionsImplementation.ButtonClasses; get => _abpDatePickerOptionsImplementation.ButtonClasses;
set => _abpDatePickerOptionsImplementation.ButtonClasses = value; set => _abpDatePickerOptionsImplementation.ButtonClasses = value;
} }
public string TodayButtonClasses { public string? TodayButtonClasses {
get => _abpDatePickerOptionsImplementation.TodayButtonClasses; get => _abpDatePickerOptionsImplementation.TodayButtonClasses;
set => _abpDatePickerOptionsImplementation.TodayButtonClasses = value; set => _abpDatePickerOptionsImplementation.TodayButtonClasses = value;
} }
public string ApplyButtonClasses { public string? ApplyButtonClasses {
get => _abpDatePickerOptionsImplementation.ApplyButtonClasses; get => _abpDatePickerOptionsImplementation.ApplyButtonClasses;
set => _abpDatePickerOptionsImplementation.ApplyButtonClasses = value; set => _abpDatePickerOptionsImplementation.ApplyButtonClasses = value;
} }
public string ClearButtonClasses { public string? ClearButtonClasses {
get => _abpDatePickerOptionsImplementation.ClearButtonClasses; get => _abpDatePickerOptionsImplementation.ClearButtonClasses;
set => _abpDatePickerOptionsImplementation.ClearButtonClasses = value; set => _abpDatePickerOptionsImplementation.ClearButtonClasses = value;
} }
public object Locale { public object? Locale {
get => _abpDatePickerOptionsImplementation.Locale; get => _abpDatePickerOptionsImplementation.Locale;
set => _abpDatePickerOptionsImplementation.Locale = value; set => _abpDatePickerOptionsImplementation.Locale = value;
} }
@ -178,12 +178,12 @@ public abstract class
set => _abpDatePickerOptionsImplementation.AutoUpdateInput = value; set => _abpDatePickerOptionsImplementation.AutoUpdateInput = value;
} }
public string ParentEl { public string? ParentEl {
get => _abpDatePickerOptionsImplementation.ParentEl; get => _abpDatePickerOptionsImplementation.ParentEl;
set => _abpDatePickerOptionsImplementation.ParentEl = value; set => _abpDatePickerOptionsImplementation.ParentEl = value;
} }
public string DateFormat { public string? DateFormat {
get => _abpDatePickerOptionsImplementation.DateFormat; get => _abpDatePickerOptionsImplementation.DateFormat;
set => _abpDatePickerOptionsImplementation.DateFormat = value; set => _abpDatePickerOptionsImplementation.DateFormat = value;
} }
@ -213,7 +213,7 @@ public abstract class
set => _abpDatePickerOptionsImplementation.IsIso = value; set => _abpDatePickerOptionsImplementation.IsIso = value;
} }
public object Options { public object? Options {
get => _abpDatePickerOptionsImplementation.Options; get => _abpDatePickerOptionsImplementation.Options;
set => _abpDatePickerOptionsImplementation.Options = value; set => _abpDatePickerOptionsImplementation.Options = value;
} }

48
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs

@ -46,7 +46,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
return string.Empty; return string.Empty;
} }
}, },
{typeof(DateTime?), o => ((DateTime?) o)?.ToString("O")}, {typeof(DateTime?), o => ((DateTime?) o)?.ToString("O")!},
{ {
typeof(DateTimeOffset), o => typeof(DateTimeOffset), o =>
{ {
@ -58,7 +58,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
return string.Empty; return string.Empty;
} }
}, },
{typeof(DateTimeOffset?), o => ((DateTimeOffset?) o)?.ToString("O")} {typeof(DateTimeOffset?), o => ((DateTimeOffset?) o)?.ToString("O")!}
}; };
protected readonly IJsonSerializer JsonSerializer; protected readonly IJsonSerializer JsonSerializer;
@ -85,12 +85,12 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
InputTagHelper = new InputTagHelper(Generator) { InputTypeName = "text" }; InputTagHelper = new InputTagHelper(Generator) { InputTypeName = "text" };
} }
protected virtual T GetAttribute<T>() where T : Attribute protected virtual T? GetAttribute<T>() where T : Attribute
{ {
return GetAttributeAndModelExpression<T>(out _); return GetAttributeAndModelExpression<T>(out _);
} }
protected abstract T GetAttributeAndModelExpression<T>(out ModelExpression modelExpression) where T : Attribute; protected abstract T? GetAttributeAndModelExpression<T>(out ModelExpression? modelExpression) where T : Attribute;
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
@ -118,7 +118,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
var optionsAttribute = GetAttributeAndModelExpression<DatePickerOptionsAttribute>(out var modelExpression); var optionsAttribute = GetAttributeAndModelExpression<DatePickerOptionsAttribute>(out var modelExpression);
if (optionsAttribute != null) if (optionsAttribute != null)
{ {
TagHelper.SetDatePickerOptions(optionsAttribute.GetDatePickerOptions(modelExpression.ModelExplorer)); TagHelper.SetDatePickerOptions(optionsAttribute.GetDatePickerOptions(modelExpression!.ModelExplorer)!);
} }
// Open and close button // Open and close button
@ -250,7 +250,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
return string.Empty; return string.Empty;
} }
protected TagHelperAttributeList ConvertDatePickerOptionsToAttributeList(IAbpDatePickerOptions options) protected TagHelperAttributeList ConvertDatePickerOptionsToAttributeList(IAbpDatePickerOptions? options)
{ {
var attrList = new TagHelperAttributeList(); var attrList = new TagHelperAttributeList();
@ -281,7 +281,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if (options.ShowDropdowns == false) if (options.ShowDropdowns == false)
{ {
attrList.Add("data-show-dropdowns", options.ShowDropdowns.ToString().ToLowerInvariant()); attrList.Add("data-show-dropdowns", options.ShowDropdowns.ToString()!.ToLowerInvariant());
} }
if (options.MinYear != null) if (options.MinYear != null)
@ -306,7 +306,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if (options.TimePicker != null) if (options.TimePicker != null)
{ {
attrList.Add("data-time-picker", options.TimePicker.ToString().ToLowerInvariant()); attrList.Add("data-time-picker", options.TimePicker.ToString()!.ToLowerInvariant());
} }
if (options.TimePickerIncrement != null) if (options.TimePickerIncrement != null)
@ -316,12 +316,12 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if (options.TimePicker24Hour != null) if (options.TimePicker24Hour != null)
{ {
attrList.Add("data-time-picker24-hour", options.TimePicker24Hour.ToString().ToLowerInvariant()); attrList.Add("data-time-picker24-hour", options.TimePicker24Hour.ToString()!.ToLowerInvariant());
} }
if (options.TimePickerSeconds != null) if (options.TimePickerSeconds != null)
{ {
attrList.Add("data-time-picker-seconds", options.TimePickerSeconds.ToString().ToLowerInvariant()); attrList.Add("data-time-picker-seconds", options.TimePickerSeconds.ToString()!.ToLowerInvariant());
} }
if (options.Opens != AbpDatePickerOpens.Center) if (options.Opens != AbpDatePickerOpens.Center)
@ -356,17 +356,17 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if (options.AutoApply != null) if (options.AutoApply != null)
{ {
attrList.Add("data-auto-apply", options.AutoApply.ToString().ToLowerInvariant()); attrList.Add("data-auto-apply", options.AutoApply.ToString()!.ToLowerInvariant());
} }
if (options.LinkedCalendars != null) if (options.LinkedCalendars != null)
{ {
attrList.Add("data-linked-calendars", options.LinkedCalendars.ToString().ToLowerInvariant()); attrList.Add("data-linked-calendars", options.LinkedCalendars.ToString()!.ToLowerInvariant());
} }
if (options.AutoUpdateInput != null) if (options.AutoUpdateInput != null)
{ {
attrList.Add("data-auto-update-input", options.AutoUpdateInput.ToString().ToLowerInvariant()); attrList.Add("data-auto-update-input", options.AutoUpdateInput.ToString()!.ToLowerInvariant());
} }
if (!options.ParentEl.IsNullOrEmpty()) if (!options.ParentEl.IsNullOrEmpty())
@ -388,12 +388,12 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if(options.AlwaysShowCalendars != null) if(options.AlwaysShowCalendars != null)
{ {
attrList.Add("data-always-show-calendars", options.AlwaysShowCalendars.ToString().ToLowerInvariant()); attrList.Add("data-always-show-calendars", options.AlwaysShowCalendars.ToString()!.ToLowerInvariant());
} }
if(options.ShowCustomRangeLabel == false) if(options.ShowCustomRangeLabel == false)
{ {
attrList.Add("data-show-custom-range-label", options.ShowCustomRangeLabel.ToString().ToLowerInvariant()); attrList.Add("data-show-custom-range-label", options.ShowCustomRangeLabel.ToString()!.ToLowerInvariant());
} }
if(options.Options != null) if(options.Options != null)
@ -403,12 +403,12 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if (options.IsUtc != null) if (options.IsUtc != null)
{ {
attrList.Add("data-is-utc", options.IsUtc.ToString().ToLowerInvariant()); attrList.Add("data-is-utc", options.IsUtc.ToString()!.ToLowerInvariant());
} }
if (options.IsIso != null) if (options.IsIso != null)
{ {
attrList.Add("data-is-iso", options.IsIso.ToString().ToLowerInvariant()); attrList.Add("data-is-iso", options.IsIso.ToString()!.ToLowerInvariant());
} }
if (!options.PickerId.IsNullOrWhiteSpace()) if (!options.PickerId.IsNullOrWhiteSpace())
@ -481,7 +481,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
} }
string text; string text;
ModelExplorer modelExplorer = null; ModelExplorer? modelExplorer = null;
if (!string.IsNullOrEmpty(TagHelper.InfoText)) if (!string.IsNullOrEmpty(TagHelper.InfoText))
{ {
@ -492,7 +492,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
var infoAttribute = GetAttributeAndModelExpression<InputInfoText>(out var modelExpression); var infoAttribute = GetAttributeAndModelExpression<InputInfoText>(out var modelExpression);
if (infoAttribute != null) if (infoAttribute != null)
{ {
modelExplorer = modelExpression.ModelExplorer; modelExplorer = modelExpression!.ModelExplorer;
text = infoAttribute.Text; text = infoAttribute.Text;
} }
else else
@ -502,7 +502,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
} }
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
modelExplorer ??= GetModelExpression().ModelExplorer; modelExplorer ??= GetModelExpression()!.ModelExplorer;
var localizedText = TagHelperLocalizer.GetLocalizedText(text, modelExplorer); var localizedText = TagHelperLocalizer.GetLocalizedText(text, modelExplorer);
var div = new TagBuilder("div"); var div = new TagBuilder("div");
@ -553,7 +553,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
{ {
var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id"); var idAttr = inputTag.Attributes.FirstOrDefault(a => a.Name == "id");
return idAttr != null ? idAttr.Value.ToString() : string.Empty; return idAttr != null ? idAttr.Value.ToString()! : string.Empty;
} }
protected virtual string GetRequiredSymbol(TagHelperContext context, TagHelperOutput output) protected virtual string GetRequiredSymbol(TagHelperContext context, TagHelperOutput output)
@ -568,7 +568,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
return GetAttribute<RequiredAttribute>() != null || isHaveRequiredAttribute ? "<span> * </span>" : ""; return GetAttribute<RequiredAttribute>() != null || isHaveRequiredAttribute ? "<span> * </span>" : "";
} }
protected abstract ModelExpression GetModelExpression(); protected abstract ModelExpression? GetModelExpression();
protected virtual async Task<string> GetLabelAsHtmlUsingTagHelperAsync(TagHelperContext context, protected virtual async Task<string> GetLabelAsHtmlUsingTagHelperAsync(TagHelperContext context,
TagHelperOutput output) TagHelperOutput output)
@ -651,7 +651,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if (infoAttribute != null) if (infoAttribute != null)
{ {
return TagHelperLocalizer.GetLocalizedText(infoAttribute.Text, modelExpression.ModelExplorer); return TagHelperLocalizer.GetLocalizedText(infoAttribute.Text, modelExpression!.ModelExplorer);
} }
return string.Empty; return string.Empty;
@ -669,7 +669,7 @@ public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelp
if (attribute != null) if (attribute != null)
{ {
var placeholderLocalized = var placeholderLocalized =
TagHelperLocalizer.GetLocalizedText(attribute.Value, modelExpression.ModelExplorer); TagHelperLocalizer.GetLocalizedText(attribute.Value, modelExpression!.ModelExplorer);
inputTagHelperOutput.Attributes.Add("placeholder", placeholderLocalized); inputTagHelperOutput.Attributes.Add("placeholder", placeholderLocalized);
} }

22
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerOptions.cs

@ -5,10 +5,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public class AbpDatePickerOptions : IAbpDatePickerOptions public class AbpDatePickerOptions : IAbpDatePickerOptions
{ {
public string PickerId { get; set; } public string? PickerId { get; set; }
public DateTime? MinDate { get; set; } public DateTime? MinDate { get; set; }
public DateTime? MaxDate { get; set; } public DateTime? MaxDate { get; set; }
public object MaxSpan { get; set; } public object? MaxSpan { get; set; }
public bool? ShowDropdowns { get; set; } public bool? ShowDropdowns { get; set; }
public int? MinYear { get; set; } public int? MinYear { get; set; }
public int? MaxYear { get; set; } public int? MaxYear { get; set; }
@ -17,25 +17,25 @@ public class AbpDatePickerOptions : IAbpDatePickerOptions
public int? TimePickerIncrement { get; set; } public int? TimePickerIncrement { get; set; }
public bool? TimePicker24Hour { get; set; } public bool? TimePicker24Hour { get; set; }
public bool? TimePickerSeconds { get; set; } public bool? TimePickerSeconds { get; set; }
public List<AbpDatePickerRange> Ranges { get; set; } public List<AbpDatePickerRange>? Ranges { get; set; }
public bool? ShowCustomRangeLabel { get; set; } public bool? ShowCustomRangeLabel { get; set; }
public bool? AlwaysShowCalendars { get; set; } public bool? AlwaysShowCalendars { get; set; }
public AbpDatePickerOpens Opens { get; set; } = AbpDatePickerOpens.Center; public AbpDatePickerOpens Opens { get; set; } = AbpDatePickerOpens.Center;
public AbpDatePickerDrops Drops { get; set; } = AbpDatePickerDrops.Down; public AbpDatePickerDrops Drops { get; set; } = AbpDatePickerDrops.Down;
public string ButtonClasses { get; set; } public string? ButtonClasses { get; set; }
public string TodayButtonClasses { get; set; } public string? TodayButtonClasses { get; set; }
public string ApplyButtonClasses { get; set; } public string? ApplyButtonClasses { get; set; }
public string ClearButtonClasses { get; set; } public string? ClearButtonClasses { get; set; }
public object Locale { get; set; } public object? Locale { get; set; }
public bool? AutoApply { get; set; } public bool? AutoApply { get; set; }
public bool? LinkedCalendars { get; set; } public bool? LinkedCalendars { get; set; }
public bool? AutoUpdateInput { get; set; } public bool? AutoUpdateInput { get; set; }
public string ParentEl { get; set; } public string? ParentEl { get; set; }
public string DateFormat { get; set; } public string? DateFormat { get; set; }
public bool OpenButton { get; set; } = true; public bool OpenButton { get; set; } = true;
public bool ClearButton { get; set; } = true; public bool ClearButton { get; set; } = true;
public bool SingleOpenAndClearButton { get; set; } = true; public bool SingleOpenAndClearButton { get; set; } = true;
public bool? IsUtc { get; set; } public bool? IsUtc { get; set; }
public bool? IsIso { get; set; } public bool? IsIso { get; set; }
public object Options { get; set; } public object? Options { get; set; }
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerRange.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public class AbpDatePickerRange public class AbpDatePickerRange
{ {
private readonly List<string> _dates = new List<string>(); private readonly List<string> _dates = new List<string>();
public string Label { get; set; } public string Label { get; set; } = default!;
public IReadOnlyList<string> Dates => _dates; public IReadOnlyList<string> Dates => _dates;
public AbpDatePickerRange() public AbpDatePickerRange()

3
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelper.cs

@ -7,8 +7,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
[HtmlTargetElement("abp-date-picker", TagStructure = TagStructure.NormalOrSelfClosing)] [HtmlTargetElement("abp-date-picker", TagStructure = TagStructure.NormalOrSelfClosing)]
public class AbpDatePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDatePickerTagHelper> public class AbpDatePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDatePickerTagHelper>
{ {
[CanBeNull] public ModelExpression? AspFor { get; set; }
public ModelExpression AspFor { get; set; }
public AbpDatePickerTagHelper(AbpDatePickerTagHelperService service) : base(service) public AbpDatePickerTagHelper(AbpDatePickerTagHelperService service) : base(service)
{ {

14
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelperService.cs

@ -19,19 +19,17 @@ public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<A
} }
protected override TagHelperOutput TagHelperOutput { get; set; } protected override TagHelperOutput TagHelperOutput { get; set; } = default!;
[CanBeNull] protected virtual InputTagHelper? DateTagHelper { get; set; }
protected virtual InputTagHelper DateTagHelper { get; set; }
[CanBeNull] protected virtual TagHelperOutput? DateTagHelperOutput { get; set; }
protected virtual TagHelperOutput DateTagHelperOutput { get; set; }
protected override string GetPropertyName() protected override string GetPropertyName()
{ {
return TagHelper.AspFor?.Name ?? string.Empty; return TagHelper.AspFor?.Name ?? string.Empty;
} }
protected override T GetAttributeAndModelExpression<T>(out ModelExpression modelExpression) protected override T? GetAttributeAndModelExpression<T>(out ModelExpression? modelExpression) where T : class
{ {
modelExpression = TagHelper.AspFor; modelExpression = TagHelper.AspFor;
return modelExpression?.ModelExplorer.GetAttribute<T>(); return modelExpression?.ModelExplorer.GetAttribute<T>();
@ -74,7 +72,7 @@ public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<A
} }
} }
protected override ModelExpression GetModelExpression() protected override ModelExpression? GetModelExpression()
{ {
return TagHelper.AspFor; return TagHelper.AspFor;
} }
@ -86,6 +84,6 @@ public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<A
protected override string GetExtraInputHtml(TagHelperContext context, TagHelperOutput output) protected override string GetExtraInputHtml(TagHelperContext context, TagHelperOutput output)
{ {
return DateTagHelperOutput?.Render(Encoder); return DateTagHelperOutput?.Render(Encoder)!;
} }
} }

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelper.cs

@ -7,11 +7,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
[HtmlTargetElement("abp-date-range-picker", TagStructure = TagStructure.NormalOrSelfClosing)] [HtmlTargetElement("abp-date-range-picker", TagStructure = TagStructure.NormalOrSelfClosing)]
public class AbpDateRangePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDateRangePickerTagHelper> public class AbpDateRangePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDateRangePickerTagHelper>
{ {
[CanBeNull] public ModelExpression? AspForStart { get; set; }
public ModelExpression AspForStart { get; set; }
[CanBeNull] public ModelExpression? AspForEnd { get; set; }
public ModelExpression AspForEnd { get; set; }
public AbpDateRangePickerTagHelper(AbpDateRangePickerTagHelperService tagHelperService) : public AbpDateRangePickerTagHelper(AbpDateRangePickerTagHelperService tagHelperService) :
base(tagHelperService) base(tagHelperService)

18
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelperService.cs

@ -25,7 +25,7 @@ public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperServ
protected override string TagName { get; set; } = "abp-date-range-picker"; protected override string TagName { get; set; } = "abp-date-range-picker";
protected override T GetAttributeAndModelExpression<T>(out ModelExpression modelExpression) protected override T? GetAttributeAndModelExpression<T>(out ModelExpression? modelExpression) where T : class
{ {
modelExpression = new[] { TagHelper.AspForStart, TagHelper.AspForEnd }.FirstOrDefault(x => x?.ModelExplorer?.GetAttribute<T>() != null); modelExpression = new[] { TagHelper.AspForStart, TagHelper.AspForEnd }.FirstOrDefault(x => x?.ModelExplorer?.GetAttribute<T>() != null);
return modelExpression?.ModelExplorer.GetAttribute<T>(); return modelExpression?.ModelExplorer.GetAttribute<T>();
@ -62,19 +62,15 @@ public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperServ
await base.ProcessAsync(context, output); await base.ProcessAsync(context, output);
} }
protected override TagHelperOutput TagHelperOutput { get; set; } protected override TagHelperOutput TagHelperOutput { get; set; } = default!;
[CanBeNull] protected virtual InputTagHelper? StartDateTagHelper { get; set; }
protected virtual InputTagHelper StartDateTagHelper { get; set; }
[CanBeNull] protected virtual TagHelperOutput? StartDateTagHelperOutput { get; set; }
protected virtual TagHelperOutput StartDateTagHelperOutput { get; set; }
[CanBeNull] protected virtual InputTagHelper? EndDateTagHelper { get; set; }
protected virtual InputTagHelper EndDateTagHelper { get; set; }
[CanBeNull] protected virtual TagHelperOutput? EndDateTagHelperOutput { get; set; }
protected virtual TagHelperOutput EndDateTagHelperOutput { get; set; }
protected override string GetPropertyName() protected override string GetPropertyName()
{ {
@ -108,7 +104,7 @@ public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperServ
return StartDateTagHelperOutput?.Render(Encoder) + EndDateTagHelperOutput?.Render(Encoder); return StartDateTagHelperOutput?.Render(Encoder) + EndDateTagHelperOutput?.Render(Encoder);
} }
protected override ModelExpression GetModelExpression() protected override ModelExpression? GetModelExpression()
{ {
return TagHelper.AspForStart; return TagHelper.AspForStart;
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/DatePickerOptionsAttribute.cs

@ -14,7 +14,7 @@ public class DatePickerOptionsAttribute : Attribute
DatePickerOptionsPropertyName = datePickerOptionsPropertyName; DatePickerOptionsPropertyName = datePickerOptionsPropertyName;
} }
public IAbpDatePickerOptions GetDatePickerOptions(ModelExplorer explorer) public IAbpDatePickerOptions? GetDatePickerOptions(ModelExplorer explorer)
{ {
var properties = explorer.Container.Properties.Where(p => p.Metadata.PropertyName != null && p.Metadata.PropertyName.Equals(DatePickerOptionsPropertyName)).ToList(); var properties = explorer.Container.Properties.Where(p => p.Metadata.PropertyName != null && p.Metadata.PropertyName.Equals(DatePickerOptionsPropertyName)).ToList();

29
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/IAbpDatePickerOptions.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public interface IAbpDatePickerOptions public interface IAbpDatePickerOptions
{ {
public string PickerId { get; set; } public string? PickerId { get; set; }
/// <summary> /// <summary>
/// Min date allowed /// Min date allowed
@ -21,7 +21,7 @@ public interface IAbpDatePickerOptions
/// <summary> /// <summary>
/// The maximum span between the selected start and end dates. Can have any property you can add to a moment object (i.e. days, months) /// The maximum span between the selected start and end dates. Can have any property you can add to a moment object (i.e. days, months)
/// </summary> /// </summary>
object MaxSpan { get; set; } object? MaxSpan { get; set; }
/// <summary> /// <summary>
/// Show year and month select boxes above calendars to jump to a specific month and year. /// Show year and month select boxes above calendars to jump to a specific month and year.
@ -66,7 +66,7 @@ public interface IAbpDatePickerOptions
/// <summary> /// <summary>
/// Set predefined date ranges the user can select from. Each key is the label for the range, and its value an array with two dates representing the bounds of the range. /// Set predefined date ranges the user can select from. Each key is the label for the range, and its value an array with two dates representing the bounds of the range.
/// </summary> /// </summary>
List<AbpDatePickerRange> Ranges { get; set; } List<AbpDatePickerRange>? Ranges { get; set; }
/// <summary> /// <summary>
/// Displays "Custom Range" at the end of the list of predefined ranges, when the ranges option is used. This option will be highlighted whenever the current date range selection does not match one of the predefined ranges. Clicking it will display the calendars to select a new range. /// Displays "Custom Range" at the end of the list of predefined ranges, when the ranges option is used. This option will be highlighted whenever the current date range selection does not match one of the predefined ranges. Clicking it will display the calendars to select a new range.
@ -91,32 +91,28 @@ public interface IAbpDatePickerOptions
/// <summary> /// <summary>
/// CSS class names that will be added to both the today, clear, and apply buttons. /// CSS class names that will be added to both the today, clear, and apply buttons.
/// </summary> /// </summary>
[CanBeNull] string? ButtonClasses { get; set; }
string ButtonClasses { get; set; }
/// <summary> /// <summary>
/// CSS class names that will be added only to the today button. /// CSS class names that will be added only to the today button.
/// </summary> /// </summary>
[CanBeNull] string? TodayButtonClasses { get; set; }
string TodayButtonClasses { get; set; }
/// <summary> /// <summary>
/// CSS class names that will be added only to the apply button. /// CSS class names that will be added only to the apply button.
/// </summary> /// </summary>
[CanBeNull] string? ApplyButtonClasses { get; set; }
string ApplyButtonClasses { get; set; }
/// <summary> /// <summary>
/// CSS class names that will be added only to the clear button. /// CSS class names that will be added only to the clear button.
/// </summary> /// </summary>
[CanBeNull] string? ClearButtonClasses { get; set; }
string ClearButtonClasses { get; set; }
/// <summary> /// <summary>
/// Allows you to provide localized strings for buttons and labels, customize the date format, and change the first day of week for the calendars. /// Allows you to provide localized strings for buttons and labels, customize the date format, and change the first day of week for the calendars.
/// </summary> /// </summary>
[CanBeNull] [CanBeNull]
object Locale { get; set; } object? Locale { get; set; }
/// <summary> /// <summary>
/// Hide the apply button, and automatically apply a new date range as soon as two dates are clicked. /// Hide the apply button, and automatically apply a new date range as soon as two dates are clicked.
@ -136,11 +132,9 @@ public interface IAbpDatePickerOptions
/// <summary> /// <summary>
/// jQuery selector of the parent element that the date range picker will be added to, if not provided this will be 'body' /// jQuery selector of the parent element that the date range picker will be added to, if not provided this will be 'body'
/// </summary> /// </summary>
[CanBeNull] string? ParentEl { get; set; }
string ParentEl { get; set; }
[CanBeNull] string? DateFormat { get; set; }
string DateFormat { get; set; }
bool OpenButton { get; set; } bool OpenButton { get; set; }
@ -155,6 +149,5 @@ public interface IAbpDatePickerOptions
/// <summary> /// <summary>
/// Other non-mapped attributes will be automatically added to the input element as is. /// Other non-mapped attributes will be automatically added to the input element as is.
/// </summary> /// </summary>
[CanBeNull] object? Options { get; set; }
object Options { get; set; }
} }

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

@ -2,9 +2,9 @@
public class FormGroupItem public class FormGroupItem
{ {
public string HtmlContent { get; set; } public string HtmlContent { get; set; } = default!;
public int Order { get; set; } public int Order { get; set; }
public string PropertyName { get; set; } public string PropertyName { get; set; } = default!;
} }

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/SelectItems.cs

@ -16,9 +16,9 @@ public class SelectItems : Attribute
ItemsListPropertyName = itemsListPropertyName; ItemsListPropertyName = itemsListPropertyName;
} }
public IEnumerable<SelectListItem> GetItems(ModelExplorer explorer) public IEnumerable<SelectListItem>? GetItems(ModelExplorer explorer)
{ {
var properties = explorer.Container.Properties.Where(p => p.Metadata.PropertyName.Equals(ItemsListPropertyName)).ToList(); var properties = explorer.Container.Properties.Where(p => p.Metadata.PropertyName!.Equals(ItemsListPropertyName)).ToList();
while (properties.Count == 0) while (properties.Count == 0)
{ {
@ -28,10 +28,10 @@ public class SelectItems : Attribute
return null; return null;
} }
properties = explorer.Container.Properties.Where(p => p.Metadata.PropertyName.Equals(ItemsListPropertyName)).ToList(); properties = explorer.Container.Properties.Where(p => p.Metadata.PropertyName!.Equals(ItemsListPropertyName)).ToList();
} }
var selectItems = (properties.First().Model as IEnumerable<SelectListItem>).ToList(); var selectItems = (properties.First().Model as IEnumerable<SelectListItem>)!.ToList();
return selectItems; return selectItems;
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/IAbpTagHelperLocalizer.cs

@ -10,7 +10,7 @@ public interface IAbpTagHelperLocalizer : ITransientDependency
{ {
string GetLocalizedText(string text, ModelExplorer explorer); string GetLocalizedText(string text, ModelExplorer explorer);
IStringLocalizer GetLocalizerOrNull(ModelExplorer explorer); IStringLocalizer? GetLocalizerOrNull(ModelExplorer explorer);
IStringLocalizer GetLocalizerOrNull(Assembly assembly); IStringLocalizer? GetLocalizerOrNull(Assembly assembly);
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/ListGroup/AbpListGroupItemTagHelper.cs

@ -6,7 +6,7 @@ public class AbpListGroupItemTagHelper : AbpTagHelper<AbpListGroupItemTagHelper,
public bool? Disabled { get; set; } public bool? Disabled { get; set; }
public string Href { get; set; } public string? Href { get; set; }
public AbpListItemTagType TagType { get; set; } = AbpListItemTagType.Default; public AbpListItemTagType TagType { get; set; } = AbpListItemTagType.Default;

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelper.cs

@ -2,7 +2,7 @@
public class AbpModalHeaderTagHelper : AbpTagHelper<AbpModalHeaderTagHelper, AbpModalHeaderTagHelperService> public class AbpModalHeaderTagHelper : AbpTagHelper<AbpModalHeaderTagHelper, AbpModalHeaderTagHelperService>
{ {
public string Title { get; set; } public string Title { get; set; } = default!;
public AbpModalHeaderTagHelper(AbpModalHeaderTagHelperService tagHelperService) public AbpModalHeaderTagHelper(AbpModalHeaderTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/AbpNavbarToggleTagHelper.cs

@ -2,7 +2,7 @@
public class AbpNavbarToggleTagHelper : AbpTagHelper<AbpNavbarToggleTagHelper, AbpNavbarToggleTagHelperService> public class AbpNavbarToggleTagHelper : AbpTagHelper<AbpNavbarToggleTagHelper, AbpNavbarToggleTagHelperService>
{ {
public string Id { get; set; } public string? Id { get; set; }
public AbpNavbarToggleTagHelper(AbpNavbarToggleTagHelperService tagHelperService) public AbpNavbarToggleTagHelper(AbpNavbarToggleTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/NavItem.cs

@ -2,7 +2,7 @@
public class NavItem public class NavItem
{ {
public string Html { get; set; } public string Html { get; set; } = default!;
public bool Active { get; set; } public bool Active { get; set; }
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/AbpPaginationTagHelper.cs

@ -7,7 +7,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Pagination;
[HtmlTargetElement("abp-paginator")] [HtmlTargetElement("abp-paginator")]
public class AbpPaginationTagHelper : AbpTagHelper<AbpPaginationTagHelper, AbpPaginationTagHelperService> public class AbpPaginationTagHelper : AbpTagHelper<AbpPaginationTagHelper, AbpPaginationTagHelperService>
{ {
public PagerModel Model { get; set; } public PagerModel Model { get; set; } = default!;
public bool? ShowInfo { get; set; } public bool? ShowInfo { get; set; }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/PageItem.cs

@ -16,7 +16,7 @@ public class PageItem
IsGap = isGap; IsGap = isGap;
} }
public override bool Equals(object obj) public override bool Equals(object? obj)
{ {
if (!(obj is PageItem item)) if (!(obj is PageItem item))
{ {

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/PagerModel.cs

@ -25,13 +25,13 @@ public class PagerModel
public int NextPage { get; set; } public int NextPage { get; set; }
public string Sort { get; set; } public string? Sort { get; set; }
public string PageUrl { get; set; } public string PageUrl { get; set; }
private const int MaxItemsCountToShowAllPages = 4; private const int MaxItemsCountToShowAllPages = 4;
public PagerModel(long totalCount, int shownItemsCount, int currentPage, int pageSize, string pageUrl, string sort = null) public PagerModel(long totalCount, int shownItemsCount, int currentPage, int pageSize, string pageUrl, string? sort = null)
{ {
TotalItemsCount = totalCount; TotalItemsCount = totalCount;
ShownItemsCount = shownItemsCount; ShownItemsCount = shownItemsCount;

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelper.cs

@ -20,15 +20,15 @@ public class AbpPopoverTagHelper : AbpTagHelper<AbpPopoverTagHelper, AbpPopoverT
public bool? Hoverable { get; set; } public bool? Hoverable { get; set; }
public string AbpPopover { get; set; } public string? AbpPopover { get; set; }
public string AbpPopoverRight { get; set; } public string? AbpPopoverRight { get; set; }
public string AbpPopoverLeft { get; set; } public string? AbpPopoverLeft { get; set; }
public string AbpPopoverTop { get; set; } public string? AbpPopoverTop { get; set; }
public string AbpPopoverBottom { get; set; } public string? AbpPopoverBottom { get; set; }
public AbpPopoverTagHelper(AbpPopoverTagHelperService tagHelperService) public AbpPopoverTagHelper(AbpPopoverTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs

@ -124,15 +124,15 @@ public class AbpPopoverTagHelperService : AbpTagHelperService<AbpPopoverTagHelpe
switch (GetDirectory()) switch (GetDirectory())
{ {
case PopoverDirectory.Top: case PopoverDirectory.Top:
return TagHelper.AbpPopoverTop; return TagHelper.AbpPopoverTop!;
case PopoverDirectory.Right: case PopoverDirectory.Right:
return TagHelper.AbpPopoverRight; return TagHelper.AbpPopoverRight!;
case PopoverDirectory.Bottom: case PopoverDirectory.Bottom:
return TagHelper.AbpPopoverBottom; return TagHelper.AbpPopoverBottom!;
case PopoverDirectory.Left: case PopoverDirectory.Left:
return TagHelper.AbpPopoverLeft; return TagHelper.AbpPopoverLeft!;
default: default:
return TagHelper.AbpPopover; return TagHelper.AbpPopover!;
} }
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelper.cs

@ -5,9 +5,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab;
[HtmlTargetElement("abp-tab-dropdown")] [HtmlTargetElement("abp-tab-dropdown")]
public class AbpTabDropdownTagHelper : AbpTagHelper<AbpTabDropdownTagHelper, AbpTabDropdownTagHelperService> public class AbpTabDropdownTagHelper : AbpTagHelper<AbpTabDropdownTagHelper, AbpTabDropdownTagHelperService>
{ {
public string Name { get; set; } public string? Name { get; set; }
public string Title { get; set; } public string Title { get; set; } = default!;
public AbpTabDropdownTagHelper(AbpTabDropdownTagHelperService tagHelperService) public AbpTabDropdownTagHelper(AbpTabDropdownTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelper.cs

@ -5,13 +5,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab;
[HtmlTargetElement("abp-tab-link", TagStructure = TagStructure.WithoutEndTag)] [HtmlTargetElement("abp-tab-link", TagStructure = TagStructure.WithoutEndTag)]
public class AbpTabLinkTagHelper : AbpTagHelper<AbpTabLinkTagHelper, AbpTabLinkTagHelperService> public class AbpTabLinkTagHelper : AbpTagHelper<AbpTabLinkTagHelper, AbpTabLinkTagHelperService>
{ {
public string Name { get; set; } public string? Name { get; set; }
public string Title { get; set; } public string Title { get; set; } = default!;
public string ParentDropdownName { get; set; } public string? ParentDropdownName { get; set; }
public string Href { get; set; } public string Href { get; set; } = default!;
public AbpTabLinkTagHelper(AbpTabLinkTagHelperService tagHelperService) public AbpTabLinkTagHelper(AbpTabLinkTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs

@ -16,7 +16,7 @@ public class AbpTabLinkTagHelperService : AbpTagHelperService<AbpTabLinkTagHelpe
var tabHeaderItems = context.GetValue<List<TabItem>>(TabItems); var tabHeaderItems = context.GetValue<List<TabItem>>(TabItems);
tabHeaderItems.Add(new TabItem(tabHeader, "", false, TagHelper.Name, TagHelper.ParentDropdownName, false)); tabHeaderItems.Add(new TabItem(tabHeader, "", false, TagHelper.Name!, TagHelper.ParentDropdownName, false));
output.SuppressOutput(); output.SuppressOutput();

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelper.cs

@ -5,13 +5,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab;
[HtmlTargetElement("abp-tab")] [HtmlTargetElement("abp-tab")]
public class AbpTabTagHelper : AbpTagHelper<AbpTabTagHelper, AbpTabTagHelperService> public class AbpTabTagHelper : AbpTagHelper<AbpTabTagHelper, AbpTabTagHelperService>
{ {
public string Name { get; set; } public string? Name { get; set; }
public string Title { get; set; } public string Title { get; set; } = default!;
public bool? Active { get; set; } public bool? Active { get; set; }
public string ParentDropdownName { get; set; } public string? ParentDropdownName { get; set; }
public AbpTabTagHelper(AbpTabTagHelperService tagHelperService) public AbpTabTagHelper(AbpTabTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs

@ -21,7 +21,7 @@ public class AbpTabTagHelperService : AbpTagHelperService<AbpTabTagHelper>
var active = TagHelper.Active ?? false; var active = TagHelper.Active ?? false;
tabHeaderItems.Add(new TabItem(tabHeader, tabContent, active, TagHelper.Name, TagHelper.ParentDropdownName, false)); tabHeaderItems.Add(new TabItem(tabHeader, tabContent, active, TagHelper.Name!, TagHelper.ParentDropdownName, false));
output.SuppressOutput(); output.SuppressOutput();
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelper.cs

@ -5,7 +5,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab;
public class AbpTabsTagHelper : AbpTagHelper<AbpTabsTagHelper, AbpTabsTagHelperService> public class AbpTabsTagHelper : AbpTagHelper<AbpTabsTagHelper, AbpTabsTagHelperService>
{ {
public string Name { get; set; } public string? Name { get; set; }
public TabStyle TabStyle { get; set; } = TabStyle.Tab; public TabStyle TabStyle { get; set; } = TabStyle.Tab;

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/TabItem.cs

@ -2,7 +2,7 @@
public class TabItem public class TabItem
{ {
public TabItem(string header, string content, bool active, string id, string parentId, bool isDropdown) public TabItem(string header, string content, bool active, string id, string? parentId, bool isDropdown)
{ {
Header = header; Header = header;
Content = content; Content = content;
@ -22,5 +22,5 @@ public class TabItem
public string Id { get; set; } public string Id { get; set; }
public string ParentId { get; set; } public string? ParentId { get; set; }
} }

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelper.cs

@ -14,17 +14,17 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip;
[HtmlTargetElement("abp-button", Attributes = "abp-tooltip-bottom")] [HtmlTargetElement("abp-button", Attributes = "abp-tooltip-bottom")]
public class AbpTooltipTagHelper : AbpTagHelper<AbpTooltipTagHelper, AbpTooltipTagHelperService> public class AbpTooltipTagHelper : AbpTagHelper<AbpTooltipTagHelper, AbpTooltipTagHelperService>
{ {
public string AbpTooltip { get; set; } public string? AbpTooltip { get; set; }
public string AbpTooltipRight { get; set; } public string? AbpTooltipRight { get; set; }
public string AbpTooltipLeft { get; set; } public string? AbpTooltipLeft { get; set; }
public string AbpTooltipTop { get; set; } public string? AbpTooltipTop { get; set; }
public string AbpTooltipBottom { get; set; } public string? AbpTooltipBottom { get; set; }
public string Title { get; set; } public string? Title { get; set; }
public AbpTooltipTagHelper(AbpTooltipTagHelperService tagHelperService) public AbpTooltipTagHelper(AbpTooltipTagHelperService tagHelperService)
: base(tagHelperService) : base(tagHelperService)

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs

@ -59,15 +59,15 @@ public class AbpTooltipTagHelperService : AbpTagHelperService<AbpTooltipTagHelpe
switch (GetDirectory()) switch (GetDirectory())
{ {
case TooltipDirectory.Top: case TooltipDirectory.Top:
return TagHelper.AbpTooltipTop; return TagHelper.AbpTooltipTop!;
case TooltipDirectory.Right: case TooltipDirectory.Right:
return TagHelper.AbpTooltipRight; return TagHelper.AbpTooltipRight!;
case TooltipDirectory.Bottom: case TooltipDirectory.Bottom:
return TagHelper.AbpTooltipBottom; return TagHelper.AbpTooltipBottom!;
case TooltipDirectory.Left: case TooltipDirectory.Left:
return TagHelper.AbpTooltipLeft; return TagHelper.AbpTooltipLeft!;
default: default:
return TagHelper.AbpTooltip; return TagHelper.AbpTooltip!;
} }
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc> <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
<AssemblyName>Volo.Abp.AspNetCore.Mvc.UI.Bootstrap</AssemblyName> <AssemblyName>Volo.Abp.AspNetCore.Mvc.UI.Bootstrap</AssemblyName>
<PackageId>Volo.Abp.AspNetCore.Mvc.UI.Bootstrap</PackageId> <PackageId>Volo.Abp.AspNetCore.Mvc.UI.Bootstrap</PackageId>

2
framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpDashboardOptionsProvider.cs

@ -3,7 +3,7 @@ using Hangfire;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundJobs.Hangfire; `namespace Volo.Abp.BackgroundJobs.Hangfire;
public class AbpDashboardOptionsProvider : ITransientDependency public class AbpDashboardOptionsProvider : ITransientDependency
{ {

Loading…
Cancel
Save