View Components
Setting Provider¶
This document provides best practices for implementing setting page
view components;
1) Define the View Component Class
public class <ModuleName>SettingGroupViewComponent : AbpViewComponent
{
// Only inject necessary services
protected I<ModuleName>SettingAppService <ModuleName>SettingAppService { get; }
...
public <ModuleName>SettingGroupViewComponent(ISettingAppService <moduleName>SettingAppService, ...)
{
<ModuleName>SettingAppService = <moduleName>SettingAppService;
....
}
}
2) Implement the InvokeAsync Method
public virtual async Task<IViewComponentResult> InvokeAsync()
{
// Always use local variables for request-specific data
var settingsViewModel = new SettingViewModel
{
BasicSettings = await <ModuleName>SettingAppService.GetBasicAsync()
};
// Conditionally load feature-specific settings
if (await FeatureChecker.IsEnabledAsync(<ModuleName>FeatureFlags.AdvancedFeature))
{
settingsViewModel.AdvancedSettings = await <ModuleName>SettingAppService.GetAdvancedAsync();
}
return View("~/Pages/<ModuleName>/Components/<ModuleName>SettingGroup/Default.cshtml", settingsViewModel);
}
3) Define the View Model as Nested Class
public class <ModuleName>SettingViewModel
{
public BasicSettingsDto BasicSettings { get; set; }
public AdvancedSettingsDto AdvancedSettings { get; set; }
// Add other setting DTOs as needed
}