Search code examples
c#asp.net.netblazorblazor-client-side

How can I do BaseLayout/BaseComponent override In Blazor


ToolbarLayout.cs

public class ToolbarLayoutBase : LayoutComponentBase
{
    public string Text { get; set; }

    public virtual void NewData()
    {
        Console.WriteLine("Save Click " + Text);
    }
    public virtual void UpdateData()
    {
        Console.WriteLine("Update Click");
    }
}

ToolbarLayout Razor

@inherits ToolbarLayoutBase
BtnSave,BtnUpdate,BtnRemove HTML Button

EditPage.cs

public class EditPageBase : ToolbarLayoutBase
{

    public override void UpdateData()
    {
        base.UpdateData();
    }

}

EditPage Razor

@inherits EditPageBase
@page "/editpage"

<ToolbarLayout  />

I have components as shown in the pictures above. I want to use my "ToolbarLayout" component as a base component, and I need methods, etc. I want to change. Like the Base Form structure in WinForm.


Solution

  • Add classes derived from ComponentBase and use @inherits

    public class MyBaseComponent : ComponentBase
    {
        [Inject]
        public IService AnInjectedService { get; set; }
    
        [Parameter]
        public string AParameter { get; set; }
    
        protected virtual void Update()
        {        
        }   
    }
    
    @inherits MyBaseComponent
    <h3>My derived component @AParamter</h3>
    
    @code {
        protected override void Update()
        {
            // code overidding my base update method
            base.Update();
        }
    }