diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs index c5ae2aebf4..d2e39b2831 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs @@ -26,6 +26,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form public override void Process(TagHelperContext context, TagHelperOutput output) { var selectItems = GetSelectItems(context,output); + SetSelectedValue(context, output, selectItems); var order = GetInputOrder(TagHelper.AspFor.ModelExplorer); @@ -71,21 +72,25 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form protected virtual List GetSelectItems(TagHelperContext context, TagHelperOutput output) { - var selectItems = TagHelper.AspItems?.ToList(); - - if (TagHelper.AspItems == null && - !GetSelectItemsIfProvidedByEnum(context, output, TagHelper.AspFor.ModelExplorer, out selectItems) && - !GetSelectItemsIfProvidedFromAttribute(context, output, TagHelper.AspFor.ModelExplorer, out selectItems)) + if (TagHelper.AspItems != null) + { + return TagHelper.AspItems.ToList(); + } + else if (TagHelper.AspFor.ModelExplorer.Metadata.IsEnum) + { + return GetSelectItemsFromEnum(context, output, TagHelper.AspFor.ModelExplorer); + } + else if (TagHelper.AspFor.ModelExplorer.Metadata.IsEnum) + { + return GetSelectItemsFromAttribute(context, output, TagHelper.AspFor.ModelExplorer); + } + else { throw new Exception("No items provided for select attribute."); } - - SetSelectedValue(context, output, selectItems); - - return selectItems; } - protected virtual bool GetSelectItemsIfProvidedByEnum(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer, out List selectItems) + protected virtual List GetSelectItemsFromEnum(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer) { IStringLocalizer localizer = null; var resourceType = _options.AssemblyResources.GetOrDefault(explorer.Container.ModelType.Assembly); @@ -95,10 +100,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form localizer = _stringLocalizerFactory.Create(resourceType); } - 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; - return selectItems != null; + return selectItems; } protected virtual string GetLocalizedPropertyName(IStringLocalizer localizer, Type enumType, string propertyName) @@ -113,11 +118,23 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return !localizedString.ResourceNotFound ? localizedString.Value : localizer[propertyName].Value; } - protected virtual bool GetSelectItemsIfProvidedFromAttribute(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer, out List selectItems) + protected virtual List GetSelectItemsFromAttribute(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer) { - selectItems = GetAttribute(explorer)?.GetItems(explorer)?.ToList(); + var selectItemsAttribute = GetAttribute(explorer); + + if (selectItemsAttribute == null) + { + return null; + } - return selectItems != null; + var selectItems = selectItemsAttribute.GetItems(explorer)?.ToList(); + + if (selectItems == null) + { + return new List(); + } + + return selectItems; } protected virtual void SetSelectedValue(TagHelperContext context, TagHelperOutput output, List selectItems) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs index 075bd062cf..0b90413f92 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs @@ -100,16 +100,22 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form protected virtual List GetSelectItems(TagHelperContext context, TagHelperOutput output) { - var selectItems = TagHelper.AspItems?.ToList(); - - if (TagHelper.AspItems == null && - !GetSelectItemsIfProvidedByEnum(context, output, TagHelper.AspFor.ModelExplorer, out selectItems) && - !GetSelectItemsIfProvidedFromAttribute(context, output, TagHelper.AspFor.ModelExplorer, out selectItems)) + if (TagHelper.AspItems != null) + { + return TagHelper.AspItems.ToList(); + } + else if (TagHelper.AspFor.ModelExplorer.Metadata.IsEnum) + { + return GetSelectItemsFromEnum(context, output, TagHelper.AspFor.ModelExplorer); + } + else if (TagHelper.AspFor.ModelExplorer.Metadata.IsEnum) + { + return GetSelectItemsFromAttribute(context, output, TagHelper.AspFor.ModelExplorer); + } + else { throw new Exception("No items provided for select attribute."); } - - return selectItems; } protected virtual string GetLabelAsHtml(TagHelperContext context, TagHelperOutput output, TagHelperOutput selectTag) @@ -198,14 +204,14 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return localizer; } - protected virtual bool GetSelectItemsIfProvidedByEnum(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer, out List selectItems) + protected virtual List GetSelectItemsFromEnum(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer) { var localizer = GetLocalizer(); - 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; - return selectItems != null; + return selectItems; } protected virtual string GetLocalizedPropertyName(IStringLocalizer localizer, Type enumType, string propertyName) @@ -220,11 +226,23 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return !localizedString.ResourceNotFound ? localizedString.Value : localizer[propertyName].Value; } - protected virtual bool GetSelectItemsIfProvidedFromAttribute(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer, out List selectItems) + protected virtual List GetSelectItemsFromAttribute(TagHelperContext context, TagHelperOutput output, ModelExplorer explorer) { - selectItems = GetAttribute(explorer)?.GetItems(explorer)?.ToList(); + var selectItemsAttribute = GetAttribute(explorer); + + if (selectItemsAttribute == null) + { + return null; + } + + var selectItems = selectItemsAttribute.GetItems(explorer)?.ToList(); - return selectItems != null; + if (selectItems == null) + { + return new List(); + } + + return selectItems; } protected virtual string GetLabelAsHtmlUsingTagHelper(TagHelperContext context, TagHelperOutput output) diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj index b4ea7332fb..d85e206871 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.HangFire/Volo.Abp.BackgroundJobs.DemoApp.HangFire.csproj @@ -11,5 +11,11 @@ + + + + Always + + diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/ConfigurationHelper.cs b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/ConfigurationHelper.cs deleted file mode 100644 index c71aec904e..0000000000 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/ConfigurationHelper.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.IO; -using Microsoft.Extensions.Configuration; - -namespace Volo.Abp.BackgroundJobs.DemoApp.Shared -{ - public static class ConfigurationHelper - { - public static IConfigurationRoot BuildConfiguration() - { - const string fileName = "appsettings.json"; - - var directory = Directory.GetCurrentDirectory(); - - while (!File.Exists(Path.Combine(directory, fileName))) - { - var parentDirectory = new DirectoryInfo(directory).Parent; - if (parentDirectory == null) - { - break; - } - - directory = parentDirectory.FullName; - } - - if (File.Exists(Path.Combine(directory, fileName))) - { - var builder = new ConfigurationBuilder() - .SetBasePath(directory) - .AddJsonFile(fileName, optional: false); - - return builder.Build(); - } - - return null; - } - } -} diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs index 4f01d40c70..69cfb2aa6f 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs @@ -1,10 +1,8 @@ -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.Autofac; using Volo.Abp.BackgroundJobs.DemoApp.Shared; using Volo.Abp.BackgroundJobs.EntityFrameworkCore; -using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.SqlServer; using Volo.Abp.Modularity; @@ -21,15 +19,6 @@ namespace Volo.Abp.BackgroundJobs.DemoApp { public override void ConfigureServices(ServiceConfigurationContext context) { - var configuration = ConfigurationHelper.BuildConfiguration(); - - context.Services.SetConfiguration(configuration); - - Configure(options => - { - options.ConnectionStrings.Default = configuration.GetConnectionString("Default"); - }); - Configure(options => { options.Configure(opts => diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj index d386d134bf..04fc1f16c6 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj @@ -14,4 +14,10 @@ + + + Always + + +