@namespace Oqtane.Shared @DynamicComponent @code { [CascadingParameter] protected PageState PageState { get; set; } [CascadingParameter] private Module ModuleState { get; set; } private ModuleMessage modulemessage { get; set; } RenderFragment DynamicComponent { get; set; } protected override void OnParametersSet() { DynamicComponent = builder => { string typename = ModuleState.ModuleType; // check for core module actions component if (Constants.DefaultModuleActions.Contains(PageState.Control)) { typename = Constants.DefaultModuleActionsTemplate.Replace("{Control}", PageState.Control); } Type moduleType = null; if (typename != null) { moduleType = Type.GetType(typename); } if (moduleType != null) { builder.OpenComponent(0, moduleType); builder.CloseComponent(); } else { // module does not exist with typename specified modulemessage.SetModuleMessage("Error Loading Component For Module " + ModuleState.ModuleDefinitionName, MessageType.Error); } }; } public void AddModuleMessage(string message, MessageType type) { modulemessage.SetModuleMessage(message, type); } }