@using [Owner].[Module]s.Services
@using [Owner].[Module]s.Models
@namespace [Owner].[Module]s
@inherits ModuleBase
@inject I[Module]Service [Module]Service
@inject NavigationManager NavigationManager
@if (_[Module]s == null)
{
Loading...
}
else
{
@if (@_[Module]s.Count != 0)
{
}
else
{
No [Module]s To Display
}
}
[Module] Module Created Successfully. Use Edit Mode To Add A [Module]. You Can Access The Files At The Following Locations:
[RootPath]Client\
- [Owner].[Module]s.Client.csproj - client project
- _Imports.razor - global imports for module components
- Edit.razor - component for adding or editing content
- Index.razor - main component for your module **the content you are reading is in this file**
- ModuleInfo.cs - implements IModule interface to provide configuration settings for your module
- Settings.razor - component for managing module settings
- Services\I[Module]Service.cs - interface for defining service API methods
- Services\[Module]Service.cs - implements service API interface methods
[RootPath]Package\
- [Owner].[Module]s.nuspec - nuget manifest for packaging module
- [Owner].[Module]s.Package.csproj - packaging project
- debug.cmd - copies assemblies to Oqtane bin folder when in Debug mode
- release.cmd - creates nuget package and deploys to Oqtane wwwroot/modules folder when in Release mode
[RootPath]Server\
- [Owner].[Module]s.Server.csproj - server project
- Controllers\[Module]Controller.cs - API methods implemented using a REST pattern
- Manager\[Module]Manager.cs - implements optional module interfaces for features such as import/export of content
- Repository\I[Module]Repository.cs - interface for defining repository methods
- Repository\[Module]Respository.cs - implements repository interface methods for data access using EF Core
- Repository\[Module]Context.cs - provides a DB Context for data access
- Scripts\[Owner].[Module]s.1.0.0.sql - database schema definition script
- Scripts\[Owner].[Module]s.Uninstall.sql - database uninstall script
- wwwroot\Module.css - module style sheet
[RootPath]Shared\
- [Owner].[Module]s.csproj - shared project
- Models\[Module].cs - model definition
@code {
public override List Resources => new List()
{
new Resource { ResourceType = ResourceType.Stylesheet, Url = ModulePath() + "Module.css" }
};
List<[Module]> _[Module]s;
protected override async Task OnInitializedAsync()
{
try
{
_[Module]s = await [Module]Service.Get[Module]sAsync(ModuleState.ModuleId);
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Loading [Module] {Error}", ex.Message);
AddModuleMessage("Error Loading [Module]", MessageType.Error);
}
}
private async Task Delete([Module] [Module])
{
try
{
await [Module]Service.Delete[Module]Async([Module].[Module]Id);
await logger.LogInformation("[Module] Deleted {[Module]}", [Module]);
_[Module]s = await [Module]Service.Get[Module]sAsync(ModuleState.ModuleId);
StateHasChanged();
}
catch (Exception ex)
{
await logger.LogError(ex, "Error Deleting [Module] {[Module]} {Error}", [Module], ex.Message);
AddModuleMessage("Error Deleting [Module]", MessageType.Error);
}
}
}