自定义表单布局验证

时间:2017-03-14 08:56:30

标签: forms validation kentico

我希望拥有自己的验证流程,包括自定义布局和消息。 默认情况下,表单生成器的验证会将所有错误消息放在输入字段旁边。并且它将在提交后立即验证所有字段。

我想在提交后逐字段验证,并在所有输入字段的相同位置显示错误消息(在表单顶部的提交按钮旁边)。

目前,我正在使用" ASCX"来尝试自定义表单布局。类型。是否可以在后端代码" .cs"?

中进行所有验证

或者我必须在源模式下在自定义表单布局设计中注入java脚本?

还是有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

在HTML布局类型中,您可以将验证宏放置在您需要的任何位置 - > $$验证:姓$$

您还可以指定在不提交表单的情况下执行的验证 - 示例 - > http://devnet.kentico.com/articles/tweaking-kentico-(2)-unique-fields

无论如何,使用上面的验证宏,您可以在任何地方移动错误消息。

答案 1 :(得分:1)

在您的在线表单中,转到布局并使用HTML手动输入布局标记,并使用表格字段值,标签和验证的宏。在那里,您可以指定表单上所有表单元素的位置,甚至是按钮。

如果您希望使用自定义CS来验证该表单,那么最好在插入之前为表单创建自定义事件处理程序。请参阅以下文档:

Custom event handler
Form Event handler

using CMS;
using CMS.DataEngine;
using CMS.OnlineForms;
using CMS.Helpers;

// Registers the custom module into the system
[assembly: RegisterModule(typeof(CustomFormModule))]

public class CustomFormModule : Module
{
    // Module class constructor, the system registers the module under the name "CustomForms"
    public CustomFormModule()
        : base("CustomForms")
    {
    }

    // Contains initialization code that is executed when the application starts
    protected override void OnInit()
    {
        base.OnInit();

        // Assigns a handler to the Insert.After event
        // This event occurs after the creation of every new form submission
        BizFormItemEvents.Insert.After += Insert_After;
    }

    private void Insert_After(object sender, CMS.OnlineForms.BizFormItemEventArgs e)
    {
        if (e.Item.TypeInfo.ObjectType.ToLower().Contains("bizform.codename"))
        {
            //do some work or form validation
        }
    }
}