Browse Source

Merge pull request #17094 from abpframework/liangshiwei/group5

pull/17107/head
maliming 3 years ago
committed by GitHub
parent
commit
2227ff0636
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/MauiBlazorRemoteTenantStore.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo.Abp.AspNetCore.Mvc.Client.Common.csproj
  3. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteExternalLocalizationStore.cs
  4. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteFeatureChecker.cs
  5. 18
      framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs
  6. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteSettingProvider.cs
  7. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo.Abp.AspNetCore.Mvc.Client.csproj
  8. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs
  9. 28
      framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs
  10. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo.Abp.AspNetCore.Mvc.Contracts.csproj
  11. 16
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs
  12. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationConfigurationDto.cs
  13. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationDto.cs
  14. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationRequestDto.cs
  15. 9
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationResourceDto.cs
  16. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationSettingConfigurationDto.cs
  17. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ClockDto.cs
  18. 16
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs
  19. 16
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs
  20. 14
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/DateTimeFormatDto.cs
  21. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/EntityExtensionDto.cs
  22. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumDto.cs
  23. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumFieldDto.cs
  24. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyAttributeDto.cs
  25. 17
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyDto.cs
  26. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiDto.cs
  27. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiLookupDto.cs
  28. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/LocalizableStringDto.cs
  29. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ModuleExtensionDto.cs
  30. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ObjectExtensionsDto.cs
  31. 15
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TimingDto.cs
  32. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/CurrentTenantDto.cs
  33. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/FindTenantResultDto.cs
  34. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.NewtonsoftJson/Volo.Abp.AspNetCore.Mvc.NewtonsoftJson.csproj
  35. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Microsoft/AspNetCore/Razor/TagHelpers/AbpTagHelperAttributeListExtensions.cs
  36. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelper.cs
  37. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperLocalizer.cs
  38. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs
  39. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelper.cs
  40. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/BreadcrumbItem.cs
  41. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs
  42. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs
  43. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelper.cs
  44. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/IButtonTagHelperBase.cs
  45. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelper.cs
  46. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs
  47. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelper.cs
  48. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs
  49. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelper.cs
  50. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs
  51. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelper.cs
  52. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelper.cs
  53. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelper.cs
  54. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelper.cs
  55. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelper.cs
  56. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/ModelExplorerExtensions.cs
  57. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperContextExtensions.cs
  58. 20
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs
  59. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs
  60. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpIdNameTagHelper.cs
  61. 16
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs
  62. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  63. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelper.cs
  64. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs
  65. 28
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs
  66. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
  67. 32
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs
  68. 48
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs
  69. 22
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerOptions.cs
  70. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerRange.cs
  71. 3
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelper.cs
  72. 14
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelperService.cs
  73. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelper.cs
  74. 18
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDateRangePickerTagHelperService.cs
  75. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/DatePickerOptionsAttribute.cs
  76. 29
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/IAbpDatePickerOptions.cs
  77. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormGroupItem.cs
  78. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/SelectItems.cs
  79. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/IAbpTagHelperLocalizer.cs
  80. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/ListGroup/AbpListGroupItemTagHelper.cs
  81. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalHeaderTagHelper.cs
  82. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/AbpNavbarToggleTagHelper.cs
  83. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Nav/NavItem.cs
  84. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/AbpPaginationTagHelper.cs
  85. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/PageItem.cs
  86. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Pagination/PagerModel.cs
  87. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelper.cs
  88. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Popover/AbpPopoverTagHelperService.cs
  89. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabDropdownTagHelper.cs
  90. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelper.cs
  91. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabLinkTagHelperService.cs
  92. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelper.cs
  93. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabTagHelperService.cs
  94. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/AbpTabsTagHelper.cs
  95. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tab/TabItem.cs
  96. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelper.cs
  97. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Tooltip/AbpTooltipTagHelperService.cs
  98. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj
  99. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling.Abstractions/Volo.Abp.AspNetCore.Mvc.UI.Bundling.Abstractions.csproj
  100. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling.Abstractions/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundleConfigurationCollection.cs

2
framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/MauiBlazorRemoteTenantStore.cs

@ -98,7 +98,7 @@ public class MauiBlazorRemoteTenantStore : ITenantStore, ITransientDependency
return null; return null;
} }
return new TenantConfiguration(tenantResultDto.TenantId.Value, tenantResultDto.Name); return new TenantConfiguration(tenantResultDto.TenantId.Value, tenantResultDto.Name!);
} }
protected virtual string CreateCacheKey(string tenantName) protected virtual string CreateCacheKey(string tenantName)

2
framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo.Abp.AspNetCore.Mvc.Client.Common.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.AspNetCore.Mvc.Client.Common</AssemblyName> <AssemblyName>Volo.Abp.AspNetCore.Mvc.Client.Common</AssemblyName>
<PackageId>Volo.Abp.AspNetCore.Mvc.Client.Common</PackageId> <PackageId>Volo.Abp.AspNetCore.Mvc.Client.Common</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

6
framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteExternalLocalizationStore.cs

@ -22,13 +22,13 @@ public class RemoteExternalLocalizationStore : IExternalLocalizationStore, ITran
LocalizationOptions = localizationOptions.Value; LocalizationOptions = localizationOptions.Value;
} }
public virtual LocalizationResourceBase GetResourceOrNull(string resourceName) public virtual LocalizationResourceBase? GetResourceOrNull(string resourceName)
{ {
var configurationDto = ConfigurationClient.Get(); var configurationDto = ConfigurationClient.Get();
return CreateLocalizationResourceFromConfigurationOrNull(resourceName, configurationDto); return CreateLocalizationResourceFromConfigurationOrNull(resourceName, configurationDto);
} }
public virtual async Task<LocalizationResourceBase> GetResourceOrNullAsync(string resourceName) public virtual async Task<LocalizationResourceBase?> GetResourceOrNullAsync(string resourceName)
{ {
var configurationDto = await ConfigurationClient.GetAsync(); var configurationDto = await ConfigurationClient.GetAsync();
return CreateLocalizationResourceFromConfigurationOrNull(resourceName, configurationDto); return CreateLocalizationResourceFromConfigurationOrNull(resourceName, configurationDto);
@ -63,7 +63,7 @@ public class RemoteExternalLocalizationStore : IExternalLocalizationStore, ITran
return resources.ToArray(); return resources.ToArray();
} }
protected virtual LocalizationResourceBase CreateLocalizationResourceFromConfigurationOrNull( protected virtual LocalizationResourceBase? CreateLocalizationResourceFromConfigurationOrNull(
string resourceName, string resourceName,
ApplicationConfigurationDto configurationDto) ApplicationConfigurationDto configurationDto)
{ {

2
framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteFeatureChecker.cs

@ -13,7 +13,7 @@ public class RemoteFeatureChecker : FeatureCheckerBase
ConfigurationClient = configurationClient; ConfigurationClient = configurationClient;
} }
public override async Task<string> GetOrNullAsync(string name) public override async Task<string?> GetOrNullAsync(string name)
{ {
var configuration = await ConfigurationClient.GetAsync(); var configuration = await ConfigurationClient.GetAsync();
return configuration.Features.Values.GetOrDefault(name); return configuration.Features.Values.GetOrDefault(name);

18
framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs

@ -14,9 +14,9 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor
{ {
public bool IsDynamic => true; public bool IsDynamic => true;
private LocalizationResourceBase _resource; private LocalizationResourceBase _resource = default!;
private ICachedApplicationConfigurationClient _applicationConfigurationClient; private ICachedApplicationConfigurationClient _applicationConfigurationClient = default!;
private ILogger<RemoteLocalizationContributor> _logger; private ILogger<RemoteLocalizationContributor> _logger = default!;
public void Initialize(LocalizationResourceInitializationContext context) public void Initialize(LocalizationResourceInitializationContext context)
{ {
@ -26,7 +26,7 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor
?? NullLogger<RemoteLocalizationContributor>.Instance; ?? NullLogger<RemoteLocalizationContributor>.Instance;
} }
public virtual LocalizedString GetOrNull(string cultureName, string name) public virtual LocalizedString? GetOrNull(string cultureName, string name)
{ {
/* cultureName is not used because remote localization can only /* cultureName is not used because remote localization can only
* be done in the current culture. */ * be done in the current culture. */
@ -34,7 +34,7 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor
return GetOrNullInternal(_resource.ResourceName, name); return GetOrNullInternal(_resource.ResourceName, name);
} }
protected virtual LocalizedString GetOrNullInternal(string resourceName, string name) protected virtual LocalizedString? GetOrNullInternal(string resourceName, string name)
{ {
var resource = GetResourceOrNull(resourceName); var resource = GetResourceOrNull(resourceName);
if (resource == null) if (resource == null)
@ -50,7 +50,7 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor
foreach (var baseResource in resource.BaseResources) foreach (var baseResource in resource.BaseResources)
{ {
value = GetOrNullInternal(baseResource, name); value = GetOrNullInternal(baseResource, name)?.ToString();
if (value != null) if (value != null)
{ {
return new LocalizedString(name, value); return new LocalizedString(name, value);
@ -121,19 +121,19 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor
return Task.FromResult((IEnumerable<string>)Array.Empty<string>()); return Task.FromResult((IEnumerable<string>)Array.Empty<string>());
} }
protected virtual ApplicationLocalizationResourceDto GetResourceOrNull(string resourceName) protected virtual ApplicationLocalizationResourceDto? GetResourceOrNull(string resourceName)
{ {
var applicationConfigurationDto = _applicationConfigurationClient.Get(); var applicationConfigurationDto = _applicationConfigurationClient.Get();
return GetResourceOrNull(applicationConfigurationDto, resourceName); return GetResourceOrNull(applicationConfigurationDto, resourceName);
} }
protected virtual async Task<ApplicationLocalizationResourceDto> GetResourceOrNullAsync(string resourceName) protected virtual async Task<ApplicationLocalizationResourceDto?> GetResourceOrNullAsync(string resourceName)
{ {
var applicationConfigurationDto = await _applicationConfigurationClient.GetAsync(); var applicationConfigurationDto = await _applicationConfigurationClient.GetAsync();
return GetResourceOrNull(applicationConfigurationDto, resourceName); return GetResourceOrNull(applicationConfigurationDto, resourceName);
} }
protected virtual ApplicationLocalizationResourceDto GetResourceOrNull( protected virtual ApplicationLocalizationResourceDto? GetResourceOrNull(
ApplicationConfigurationDto applicationConfigurationDto, ApplicationConfigurationDto applicationConfigurationDto,
string resourceName) string resourceName)
{ {

2
framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteSettingProvider.cs

@ -15,7 +15,7 @@ public class RemoteSettingProvider : ISettingProvider, ITransientDependency
ConfigurationClient = configurationClient; ConfigurationClient = configurationClient;
} }
public async Task<string> GetOrNullAsync(string name) public async Task<string?> GetOrNullAsync(string name)
{ {
var configuration = await ConfigurationClient.GetAsync(); var configuration = await ConfigurationClient.GetAsync();
return configuration.Setting.Values.GetOrDefault(name); return configuration.Setting.Values.GetOrDefault(name);

2
framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo.Abp.AspNetCore.Mvc.Client.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.AspNetCore.Mvc.Client</AssemblyName> <AssemblyName>Volo.Abp.AspNetCore.Mvc.Client</AssemblyName>
<PackageId>Volo.Abp.AspNetCore.Mvc.Client</PackageId> <PackageId>Volo.Abp.AspNetCore.Mvc.Client</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

4
framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs

@ -47,14 +47,14 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu
return configuration; return configuration;
} }
configuration = await Cache.GetOrAddAsync( configuration = (await Cache.GetOrAddAsync(
cacheKey, cacheKey,
async () => await GetRemoteConfigurationAsync(), async () => await GetRemoteConfigurationAsync(),
() => new DistributedCacheEntryOptions () => new DistributedCacheEntryOptions
{ {
AbsoluteExpirationRelativeToNow = Options.ApplicationConfigurationDtoCacheAbsoluteExpiration AbsoluteExpirationRelativeToNow = Options.ApplicationConfigurationDtoCacheAbsoluteExpiration
} }
); ))!;
if (httpContext != null) if (httpContext != null)
{ {

28
framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs

@ -31,7 +31,7 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency
Options = options.Value; Options = options.Value;
} }
public async Task<TenantConfiguration> FindAsync(string name) public async Task<TenantConfiguration?> FindAsync(string name)
{ {
var cacheKey = CreateCacheKey(name); var cacheKey = CreateCacheKey(name);
var httpContext = HttpContextAccessor?.HttpContext; var httpContext = HttpContextAccessor?.HttpContext;
@ -41,14 +41,14 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency
return tenantConfiguration; return tenantConfiguration;
} }
tenantConfiguration = await Cache.GetOrAddAsync( tenantConfiguration = (await Cache.GetOrAddAsync(
cacheKey, cacheKey,
async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name)), async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name))!,
() => new DistributedCacheEntryOptions () => new DistributedCacheEntryOptions
{ {
AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration
} }
); ))!;
if (httpContext != null) if (httpContext != null)
{ {
@ -58,7 +58,7 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency
return tenantConfiguration; return tenantConfiguration;
} }
public async Task<TenantConfiguration> FindAsync(Guid id) public async Task<TenantConfiguration?> FindAsync(Guid id)
{ {
var cacheKey = CreateCacheKey(id); var cacheKey = CreateCacheKey(id);
var httpContext = HttpContextAccessor?.HttpContext; var httpContext = HttpContextAccessor?.HttpContext;
@ -68,14 +68,14 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency
return tenantConfiguration; return tenantConfiguration;
} }
tenantConfiguration = await Cache.GetOrAddAsync( tenantConfiguration = (await Cache.GetOrAddAsync(
cacheKey, cacheKey,
async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id)), async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id))!,
() => new DistributedCacheEntryOptions () => new DistributedCacheEntryOptions
{ {
AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration
} }
); ))!;
if (httpContext != null) if (httpContext != null)
{ {
@ -97,12 +97,12 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency
tenantConfiguration = Cache.GetOrAdd( tenantConfiguration = Cache.GetOrAdd(
cacheKey, cacheKey,
() => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name))), () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name))!),
() => new DistributedCacheEntryOptions () => new DistributedCacheEntryOptions
{ {
AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration
} }
); )!;
if (httpContext != null) if (httpContext != null)
{ {
@ -124,12 +124,12 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency
tenantConfiguration = Cache.GetOrAdd( tenantConfiguration = Cache.GetOrAdd(
cacheKey, cacheKey,
() => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id))), () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id))!),
() => new DistributedCacheEntryOptions () => new DistributedCacheEntryOptions
{ {
AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration AbsoluteExpirationRelativeToNow = Options.TenantConfigurationCacheAbsoluteExpiration
} }
); )!;
if (httpContext != null) if (httpContext != null)
{ {
@ -139,14 +139,14 @@ public class MvcRemoteTenantStore : ITenantStore, ITransientDependency
return tenantConfiguration; return tenantConfiguration;
} }
protected virtual TenantConfiguration CreateTenantConfiguration(FindTenantResultDto tenantResultDto) protected virtual TenantConfiguration? CreateTenantConfiguration(FindTenantResultDto tenantResultDto)
{ {
if (!tenantResultDto.Success || tenantResultDto.TenantId == null) if (!tenantResultDto.Success || tenantResultDto.TenantId == null)
{ {
return null; return null;
} }
return new TenantConfiguration(tenantResultDto.TenantId.Value, tenantResultDto.Name); return new TenantConfiguration(tenantResultDto.TenantId.Value, tenantResultDto.Name!);
} }
protected virtual string CreateCacheKey(string tenantName) protected virtual string CreateCacheKey(string tenantName)

2
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo.Abp.AspNetCore.Mvc.Contracts.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.AspNetCore.Mvc.Contracts</AssemblyName> <AssemblyName>Volo.Abp.AspNetCore.Mvc.Contracts</AssemblyName>
<PackageId>Volo.Abp.AspNetCore.Mvc.Contracts</PackageId> <PackageId>Volo.Abp.AspNetCore.Mvc.Contracts</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

16
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs

@ -31,4 +31,20 @@ public class ApplicationConfigurationDto : IHasExtraProperties
public ObjectExtensionsDto ObjectExtensions { get; set; } public ObjectExtensionsDto ObjectExtensions { get; set; }
public ExtraPropertyDictionary ExtraProperties { get; set; } public ExtraPropertyDictionary ExtraProperties { get; set; }
public ApplicationConfigurationDto()
{
Localization = new ApplicationLocalizationConfigurationDto();
Auth = new ApplicationAuthConfigurationDto();
Setting = new ApplicationSettingConfigurationDto();
CurrentUser = new CurrentUserDto();
Features = new ApplicationFeatureConfigurationDto();
GlobalFeatures = new ApplicationGlobalFeatureConfigurationDto();
MultiTenancy = new MultiTenancyInfoDto();
CurrentTenant = new CurrentTenantDto();
Timing = new TimingDto();
Clock = new ClockDto();
ObjectExtensions = new ObjectExtensionsDto();
ExtraProperties = new ExtraPropertyDictionary();
}
} }

5
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationConfigurationDto.cs

@ -28,7 +28,7 @@ public class ApplicationLocalizationConfigurationDto
public CurrentCultureDto CurrentCulture { get; set; } public CurrentCultureDto CurrentCulture { get; set; }
public string DefaultResourceName { get; set; } public string? DefaultResourceName { get; set; }
public Dictionary<string, List<NameValue>> LanguagesMap { get; set; } public Dictionary<string, List<NameValue>> LanguagesMap { get; set; }
@ -38,5 +38,8 @@ public class ApplicationLocalizationConfigurationDto
{ {
Values = new Dictionary<string, Dictionary<string, string>>(); Values = new Dictionary<string, Dictionary<string, string>>();
Languages = new List<LanguageInfo>(); Languages = new List<LanguageInfo>();
CurrentCulture = new CurrentCultureDto();
LanguagesMap = new Dictionary<string, List<NameValue>>();
LanguageFilesMap = new Dictionary<string, List<NameValue>>();
} }
} }

5
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationDto.cs

@ -7,4 +7,9 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public class ApplicationLocalizationDto public class ApplicationLocalizationDto
{ {
public Dictionary<string, ApplicationLocalizationResourceDto> Resources { get; set; } public Dictionary<string, ApplicationLocalizationResourceDto> Resources { get; set; }
public ApplicationLocalizationDto()
{
Resources = new Dictionary<string, ApplicationLocalizationResourceDto>();
}
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationRequestDto.cs

@ -5,7 +5,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public class ApplicationLocalizationRequestDto public class ApplicationLocalizationRequestDto
{ {
[Required] [Required]
public string CultureName { get; set; } public string CultureName { get; set; } = default!;
public bool OnlyDynamics { get; set; } public bool OnlyDynamics { get; set; }
} }

9
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationResourceDto.cs

@ -7,6 +7,11 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public class ApplicationLocalizationResourceDto public class ApplicationLocalizationResourceDto
{ {
public Dictionary<string, string> Texts { get; set; } public Dictionary<string, string> Texts { get; set; }
public string[] BaseResources { get; set; } public string[] BaseResources { get; set; } = default!;
public ApplicationLocalizationResourceDto()
{
Texts = new Dictionary<string, string>();
}
} }

7
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationSettingConfigurationDto.cs

@ -6,5 +6,10 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
[Serializable] [Serializable]
public class ApplicationSettingConfigurationDto public class ApplicationSettingConfigurationDto
{ {
public Dictionary<string, string> Values { get; set; } public Dictionary<string, string?> Values { get; set; }
public ApplicationSettingConfigurationDto()
{
Values = new Dictionary<string, string?>();
}
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ClockDto.cs

@ -2,5 +2,5 @@
public class ClockDto public class ClockDto
{ {
public string Kind { get; set; } public string Kind { get; set; } = default!;
} }

16
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs

@ -5,21 +5,21 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
[Serializable] [Serializable]
public class CurrentCultureDto public class CurrentCultureDto
{ {
public string DisplayName { get; set; } public string DisplayName { get; set; } = default!;
public string EnglishName { get; set; } public string EnglishName { get; set; } = default!;
public string ThreeLetterIsoLanguageName { get; set; } public string ThreeLetterIsoLanguageName { get; set; } = default!;
public string TwoLetterIsoLanguageName { get; set; } public string TwoLetterIsoLanguageName { get; set; } = default!;
public bool IsRightToLeft { get; set; } public bool IsRightToLeft { get; set; }
public string CultureName { get; set; } public string CultureName { get; set; } = default!;
public string Name { get; set; } public string Name { get; set; } = default!;
public string NativeName { get; set; } public string NativeName { get; set; } = default!;
public DateTimeFormatDto DateTimeFormat { get; set; } public DateTimeFormatDto DateTimeFormat { get; set; } = default!;
} }

16
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs

@ -15,23 +15,23 @@ public class CurrentUserDto
public Guid? ImpersonatorTenantId { get; set; } public Guid? ImpersonatorTenantId { get; set; }
public string ImpersonatorUserName { get; set; } public string? ImpersonatorUserName { get; set; }
public string ImpersonatorTenantName { get; set; } public string? ImpersonatorTenantName { get; set; }
public string UserName { get; set; } public string? UserName { get; set; }
public string Name { get; set; } public string? Name { get; set; }
public string SurName { get; set; } public string? SurName { get; set; }
public string Email { get; set; } public string? Email { get; set; }
public bool EmailVerified { get; set; } public bool EmailVerified { get; set; }
public string PhoneNumber { get; set; } public string? PhoneNumber { get; set; }
public bool PhoneNumberVerified { get; set; } public bool PhoneNumberVerified { get; set; }
public string[] Roles { get; set; } public string[] Roles { get; set; } = default!;
} }

14
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/DateTimeFormatDto.cs

@ -2,17 +2,17 @@
public class DateTimeFormatDto public class DateTimeFormatDto
{ {
public string CalendarAlgorithmType { get; set; } public string CalendarAlgorithmType { get; set; } = default!;
public string DateTimeFormatLong { get; set; } public string DateTimeFormatLong { get; set; } = default!;
public string ShortDatePattern { get; set; } public string ShortDatePattern { get; set; } = default!;
public string FullDateTimePattern { get; set; } public string FullDateTimePattern { get; set; } = default!;
public string DateSeparator { get; set; } public string DateSeparator { get; set; } = default!;
public string ShortTimePattern { get; set; } public string ShortTimePattern { get; set; } = default!;
public string LongTimePattern { get; set; } public string LongTimePattern { get; set; } = default!;
} }

6
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/EntityExtensionDto.cs

@ -9,4 +9,10 @@ public class EntityExtensionDto
public Dictionary<string, ExtensionPropertyDto> Properties { get; set; } public Dictionary<string, ExtensionPropertyDto> Properties { get; set; }
public Dictionary<string, object> Configuration { get; set; } public Dictionary<string, object> Configuration { get; set; }
public EntityExtensionDto()
{
Properties = new Dictionary<string, ExtensionPropertyDto>();
Configuration = new Dictionary<string, object>();
}
} }

7
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumDto.cs

@ -8,5 +8,10 @@ public class ExtensionEnumDto
{ {
public List<ExtensionEnumFieldDto> Fields { get; set; } public List<ExtensionEnumFieldDto> Fields { get; set; }
public string LocalizationResource { get; set; } public string? LocalizationResource { get; set; }
public ExtensionEnumDto()
{
Fields = new List<ExtensionEnumFieldDto>();
}
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumFieldDto.cs

@ -5,7 +5,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending;
[Serializable] [Serializable]
public class ExtensionEnumFieldDto public class ExtensionEnumFieldDto
{ {
public string Name { get; set; } public string? Name { get; set; }
public object Value { get; set; } public object? Value { get; set; }
} }

7
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyAttributeDto.cs

@ -6,7 +6,12 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending;
[Serializable] [Serializable]
public class ExtensionPropertyAttributeDto public class ExtensionPropertyAttributeDto
{ {
public string TypeSimple { get; set; } public string TypeSimple { get; set; } = default!;
public Dictionary<string, object> Config { get; set; } public Dictionary<string, object> Config { get; set; }
public ExtensionPropertyAttributeDto()
{
Config = new Dictionary<string, object>();
}
} }

17
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyDto.cs

@ -7,12 +7,11 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending;
[Serializable] [Serializable]
public class ExtensionPropertyDto public class ExtensionPropertyDto
{ {
public string Type { get; set; } public string Type { get; set; } = default!;
public string TypeSimple { get; set; } public string TypeSimple { get; set; } = default!;
[CanBeNull] public LocalizableStringDto? DisplayName { get; set; }
public LocalizableStringDto DisplayName { get; set; }
public ExtensionPropertyApiDto Api { get; set; } public ExtensionPropertyApiDto Api { get; set; }
@ -22,5 +21,13 @@ public class ExtensionPropertyDto
public Dictionary<string, object> Configuration { get; set; } public Dictionary<string, object> Configuration { get; set; }
public object DefaultValue { get; set; } public object? DefaultValue { get; set; }
public ExtensionPropertyDto()
{
Api = new ExtensionPropertyApiDto();
Ui = new ExtensionPropertyUiDto();
Attributes = new List<ExtensionPropertyAttributeDto>();
Configuration = new Dictionary<string, object>();
}
} }

8
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiDto.cs

@ -9,4 +9,12 @@ public class ExtensionPropertyUiDto
public ExtensionPropertyUiFormDto OnCreateForm { get; set; } public ExtensionPropertyUiFormDto OnCreateForm { get; set; }
public ExtensionPropertyUiFormDto OnEditForm { get; set; } public ExtensionPropertyUiFormDto OnEditForm { get; set; }
public ExtensionPropertyUiLookupDto Lookup { get; set; } public ExtensionPropertyUiLookupDto Lookup { get; set; }
public ExtensionPropertyUiDto()
{
OnTable = new ExtensionPropertyUiTableDto();
OnCreateForm = new ExtensionPropertyUiFormDto();
OnEditForm = new ExtensionPropertyUiFormDto();
Lookup = new ExtensionPropertyUiLookupDto();
}
} }

10
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiLookupDto.cs

@ -5,9 +5,9 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending;
[Serializable] [Serializable]
public class ExtensionPropertyUiLookupDto public class ExtensionPropertyUiLookupDto
{ {
public string Url { get; set; } public string Url { get; set; } = default!;
public string ResultListPropertyName { get; set; } public string ResultListPropertyName { get; set; } = default!;
public string DisplayPropertyName { get; set; } public string DisplayPropertyName { get; set; } = default!;
public string ValuePropertyName { get; set; } public string ValuePropertyName { get; set; } = default!;
public string FilterParamName { get; set; } public string FilterParamName { get; set; } = default!;
} }

5
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/LocalizableStringDto.cs

@ -9,10 +9,9 @@ public class LocalizableStringDto
[NotNull] [NotNull]
public string Name { get; private set; } public string Name { get; private set; }
[CanBeNull] public string? Resource { get; set; }
public string Resource { get; set; }
public LocalizableStringDto([NotNull] string name, string resource = null) public LocalizableStringDto([NotNull] string name, string? resource = null)
{ {
Name = Check.NotNullOrEmpty(name, nameof(name)); Name = Check.NotNullOrEmpty(name, nameof(name));
Resource = resource; Resource = resource;

6
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ModuleExtensionDto.cs

@ -9,4 +9,10 @@ public class ModuleExtensionDto
public Dictionary<string, EntityExtensionDto> Entities { get; set; } public Dictionary<string, EntityExtensionDto> Entities { get; set; }
public Dictionary<string, object> Configuration { get; set; } public Dictionary<string, object> Configuration { get; set; }
public ModuleExtensionDto()
{
Entities = new Dictionary<string, EntityExtensionDto>();
Configuration = new Dictionary<string, object>();
}
} }

6
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ObjectExtensionsDto.cs

@ -9,4 +9,10 @@ public class ObjectExtensionsDto
public Dictionary<string, ModuleExtensionDto> Modules { get; set; } public Dictionary<string, ModuleExtensionDto> Modules { get; set; }
public Dictionary<string, ExtensionEnumDto> Enums { get; set; } public Dictionary<string, ExtensionEnumDto> Enums { get; set; }
public ObjectExtensionsDto()
{
Modules = new Dictionary<string, ModuleExtensionDto>();
Enums = new Dictionary<string, ExtensionEnumDto>();
}
} }

15
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TimingDto.cs

@ -3,6 +3,11 @@
public class TimingDto public class TimingDto
{ {
public TimeZone TimeZone { get; set; } public TimeZone TimeZone { get; set; }
public TimingDto()
{
TimeZone = new TimeZone();
}
} }
public class TimeZone public class TimeZone
@ -10,14 +15,20 @@ public class TimeZone
public IanaTimeZone Iana { get; set; } public IanaTimeZone Iana { get; set; }
public WindowsTimeZone Windows { get; set; } public WindowsTimeZone Windows { get; set; }
public TimeZone()
{
Iana = new IanaTimeZone();
Windows = new WindowsTimeZone();
}
} }
public class WindowsTimeZone public class WindowsTimeZone
{ {
public string TimeZoneId { get; set; } public string? TimeZoneId { get; set; }
} }
public class IanaTimeZone public class IanaTimeZone
{ {
public string TimeZoneName { get; set; } public string? TimeZoneName { get; set; }
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/CurrentTenantDto.cs

@ -8,7 +8,7 @@ public class CurrentTenantDto
{ {
public Guid? Id { get; set; } public Guid? Id { get; set; }
public string Name { get; set; } public string? Name { get; set; }
public bool IsAvailable { get; set; } public bool IsAvailable { get; set; }
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/FindTenantResultDto.cs

@ -9,7 +9,7 @@ public class FindTenantResultDto
public Guid? TenantId { get; set; } public Guid? TenantId { get; set; }
public string Name { get; set; } public string? Name { get; set; }
public bool IsActive { get; set; } public bool IsActive { get; set; }
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.NewtonsoftJson/Volo.Abp.AspNetCore.Mvc.NewtonsoftJson.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.NewtonsoftJson</AssemblyName> <AssemblyName>Volo.Abp.AspNetCore.Mvc.NewtonsoftJson</AssemblyName>
<PackageId>Volo.Abp.AspNetCore.Mvc.NewtonsoftJson</PackageId> <PackageId>Volo.Abp.AspNetCore.Mvc.NewtonsoftJson</PackageId>

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.AspNetCore.Mvc.UI.Bundling.Abstractions/Volo.Abp.AspNetCore.Mvc.UI.Bundling.Abstractions.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling.Abstractions/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundleConfigurationCollection.cs

@ -27,7 +27,7 @@ public class BundleConfigurationCollection
/// <returns>Returns this object for chained calls.</returns> /// <returns>Returns this object for chained calls.</returns>
public BundleConfigurationCollection Add( public BundleConfigurationCollection Add(
[NotNull] string bundleName, [NotNull] string bundleName,
[CanBeNull] Action<BundleConfiguration> configureAction = null) Action<BundleConfiguration>? configureAction = null)
{ {
if (!TryAdd(bundleName, configureAction)) if (!TryAdd(bundleName, configureAction))
{ {
@ -52,7 +52,7 @@ public class BundleConfigurationCollection
/// <returns>Returns true if added. Returns false if it's already added before.</returns> /// <returns>Returns true if added. Returns false if it's already added before.</returns>
public bool TryAdd( public bool TryAdd(
[NotNull] string bundleName, [NotNull] string bundleName,
[CanBeNull] Action<BundleConfiguration> configureAction = null, Action<BundleConfiguration>? configureAction = null,
bool overrideIfExists = false) bool overrideIfExists = false)
{ {
Check.NotNull(bundleName, nameof(bundleName)); Check.NotNull(bundleName, nameof(bundleName));
@ -78,7 +78,7 @@ public class BundleConfigurationCollection
return true; return true;
} }
private BundleConfiguration CreateBundle(string bundleName, Action<BundleConfiguration> configureAction) private BundleConfiguration CreateBundle(string bundleName, Action<BundleConfiguration>? configureAction)
{ {
var bundle = new BundleConfiguration(bundleName); var bundle = new BundleConfiguration(bundleName);

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save