One of most common scenario I came across in Sitecore 9 Form is to create your custom submit action. You can achieve this in three simple steps.
Step 1: Create submit action button in Sitecore
Create the custom action button under /sitecore/system/Settings/Forms/Submit Actions.
![](https://madhuanbalagan.com/wp-content/uploads/2019/03/CreateSubmitAction-1.png)
Step 2: Create code behind class
Create a class that inherits SubmitActionBase class and override the Execute method.
public class CustomSubmitAction : SubmitActionBase<string>
{
public CustomSubmitAction(ISubmitActionData submitActionData) : base(submitActionData)
{
}
public override void ExecuteAction(FormSubmitContext formSubmitContext, string parameters)
{
Assert.ArgumentNotNull((object)formSubmitContext, nameof(formSubmitContext));
if (this.TryParse(parameters, out string target))
{
try
{
if (this.Execute(target, formSubmitContext))
return;
}
catch (ArgumentNullException ex)
{
}
}
formSubmitContext.Errors.Add(new FormActionError()
{
ErrorMessage = this.SubmitActionData.ErrorMessage
});
}
protected override bool Execute(string data, FormSubmitContext formSubmitContext)
{
Assert.ArgumentNotNull(data, nameof(data));
Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext));
//Prepare model here
var model = new EmailModel()
{
Email = GetValue(formSubmitContext.Fields.FirstOrDefault(f => f.Name.Equals("EmailAddress")))
};
// Call any API service call
return true;
}
private static string GetValue(object field)
{
return field?.GetType().GetProperty("Value")?.GetValue(field, null)?.ToString() ?? string.Empty;
}
protected override bool TryParse(string value, out string target)
{
target = string.Empty;
return true;
}
Step 3: Set the custom submit action fields
Update the ModelType and Error Message on the button shown below.
![](https://madhuanbalagan.com/wp-content/uploads/2019/03/CustomSubmitAction-1024x398.png)
Bind the custom submit action to Submit button like below.
![](https://madhuanbalagan.com/wp-content/uploads/2019/04/BindSubmitAction1-423x1024.png)
Publish the button. The submit button on form should now trigger the custom save action! Any questions, let me know.
Happy sitecoring.
Hi,
It a very nice post, can you create the something on sitecore 9 form Custom Attribute.
for e.g
input class=”field__input js-first_name parsley-error” id=”first_name” name=”first_name” type=”text” value=”” data-ga-label=”First Name” data-parsley-trigger=”blur” tabindex=”1″ data-parsley-id=”7″
Thank you. I haven’t done any custom attribute, but this SSE post might help you.
https://sitecore.stackexchange.com/questions/18641/creating-custom-data-attribute-for-sitecore-form-fields