Copy public interface ICustomContentComponent
{
string Name { get ; }
Models . Content ? Content { get ; set ; } // must be set as [Parameter]
}
Example of using this below, this is the contact form in the starter kit.
Copy @using System . ComponentModel . DataAnnotations
@implements ZauberCMS . Core . Content . Interfaces . ICustomContentComponent
@rendermode InteractiveServer
< div class = "pt-2" >
@if (Sent)
{
< div class = "alert alert-primary" role = "alert" >
Contact form sent
</ div >
}
else
{
< EditForm Model = "ContactModel" OnValidSubmit = "Submit" FormName = "ContactForm" >
< DataAnnotationsValidator />
@ *< ValidationSummary />* @
< div class = "row g-3" >
< div class = "col" >
< label class = "form-label" > Name </ label >
< InputText @bind - Value = "ContactModel!.Name" DisplayName = "Name" class = "form-control" />
< ValidationMessage For = "@(() => ContactModel.Name)" class = "text-danger" />
</ div >
< div class = "col" >
< label class = "form-label" > Email </ label >
< InputText @bind - Value = "ContactModel!.Email" DisplayName = "Email" class = "form-control" />
< ValidationMessage For = "@(() => ContactModel.Email)" class = "text-danger" />
</ div >
< div class = "col-12" >
< label class = "form-label" > Message </ label >
< InputTextArea @bind - Value = "ContactModel!.Message" DisplayName = "Message" class = "form-control" />
< ValidationMessage For = "@(() => ContactModel.Message)" class = "text-danger" />
</ div >
< div class = "col-12" >
< button type = "submit" class = "btn btn-primary" > Send </ button >
</ div >
</ div >
</ EditForm >
}
</ div >
@code {
public string Name => "Contact Form" ;
[Parameter] public Content ? Content { get; set; }
private ContactFormModel ? ContactModel { get; set; }
private bool Sent { get; set; }
protected override void OnInitialized () = > ContactModel ??= new ContactFormModel ();
private void Submit ()
{
Sent = true ;
}
public class ContactFormModel
{
[Required]
public string Name { get; set; } = string . Empty ;
[Required]
[EmailAddress]
public string Email { get; set; } = string . Empty ;
[Required]
public string Message { get; set; } = string . Empty ;
}
}