Calling all developers! We invite you to provide your input on Feature Experimentation by completing this brief survey.
Calling all developers! We invite you to provide your input on Feature Experimentation by completing this brief survey.
I got this working by also creating a controller, inheriting from the one provided by EPiServer Forms:
public class FormContainerWithConfirmationEmailBlockController : FormContainerBlockController { }
And then moving my view into FormContainerWithConfirmationEmailBlockController/Index.cshtml
Hope that helps someone else.
Andy
You can have more information in this post https://medium.com/@lockevn/replace-default-controller-of-episerver-forms-8f8e61d3885c#.bo5nc21w3
Did you reuse the partial rendering to the FormContainerBlock in the zip file or did you copy it locally?
@Html.Partial("~/modules/_protected/EPiServer.Forms/Views/ElementBlocks/FormContainerBlock.ascx", Model)
This path worked as expected
@Html.Partial("/Episerver/EPiServer.Forms/Views/ElementBlocks/FormContainerBlock.ascx", Model)
Thanks Øyvind!
Below is the steps to make it work.
1. Extend FormContainerBlock, and add or subtract properties as you want.
public class ExtendedFormContainerBlock : FormContainerBlock
2. Extend FormContainerBlockController, and call base class to do the job. This call is not required, but I like to be able to set a break point or do custom logging.
[TemplateDescriptor( AvailableWithoutTag = true, Default = true, ModelType = typeof(ExtendedFormContainerBlock), TemplateTypeCategory = TemplateTypeCategories.MvcPartialController)] public class ExtendedFormContainerBlockController : FormContainerBlockController { public override ActionResult Index(FormContainerBlock currentBlock) { return base.Index(currentBlock); } }
3. Create a matching view (ExtendedFormContainerBlock.cshtml) and place it in Views\Shared\ElementBlocks. You can change this path in modules\_protected\EPiServer.Forms\Forms.config if your want to. Add Øyvinds code to the view.
@model ExtendedFormContainerBlock @Html.Partial("/Episerver/EPiServer.Forms/Views/ElementBlocks/FormContainerBlock.ascx", Model)
The partial above will render from the zip-file directly, so if you have added properties that should be shown to end users this will not work. Then the alternative is to unzip the file (modules\_protected\EPiServer.Forms\EPiServer.Forms.zip) and extract the FormContainerBlock.ascx file in modules\_protected\EPiServer.Forms\Views\ElementBlocks. Make your changes to FormContainerBlock.ascx and update the partial path to:
@Html.Partial("~/modules/_protected/EPiServer.Forms/Views/ElementBlocks/FormContainerBlock.ascx", Model)
I'm working with EPiServer Forms and looking to add an additional field to the form block. I've done this by creating a new class that inherits from FormContainerBlock like this:
That works from an editing perspective when I view "All Properties" so I can create a form and add fields to it as expected.
However the form doesn't render, neither on the front-end nor in the back-office "On-page editing view". I've created a view like this and saved it in Shared/Blocks/FormContainerWithConfirmationEmailBlock.cshtml:
When I check in this view I can see that Model.Form is null.
I've set up a parallel form using FormContainerBlock directly, and that works as expected.
Any suggestions as to what I'm missing here are much appreciated.
Thanks
Andy