Как я могу сделать недействительной или остановить обработку формы из обработчика события нажатия кнопки «Отправить»? - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь реализовать некоторую пользовательскую логику проверки на стороне сервера для настраиваемого элемента управления формы, работающего на Kentico v10.0.51 и .NET Framework 4.6. Я хочу, чтобы эта логика запускалась при отправке событий, и я хочу определить логику в коде позади пользовательского элемента управления формы. Как я могу сделать недействительной или остановить обработку формы из обработчика события нажатия кнопки «Отправить»? См. Прикрепленный для сокращенного контрольного примера, например.

https://pastebin.com/Lnt0Rn9y

using System;
using CMS.FormEngine.Web.UI;
using CMS.Helpers;
// ReSharper disable ArrangeAccessorOwnerBody

namespace CMSApp.CMSFormControls.Custom
{
    public partial class ServerSideValidator : FormEngineUserControl
    {
        public override object Value
        {
            get { return txtValue.Value; }
            set { txtValue.Value = ValidationHelper.GetString(value, string.Empty); }
        }

        protected override void OnInit(EventArgs e)
        {
            Form.SubmitButton.Click += SubmitButtonOnClick;
            base.OnInit(e);
        }

        private void SubmitButtonOnClick(object sender, EventArgs e)
        {
            var valid = CustomValidationHelper.ServerSideValidationMethod(Value);

            if (!valid)
            {
                //TODO: Invalidate the form before save or notify. (Form.?)
            }
        }
    }
}

1 Ответ

0 голосов
/ 17 сентября 2018

Используйте переопределенный метод:

/// <summary>
/// Returns true if a color is selected. Otherwise, it returns false and displays an error message.
/// </summary>
public override bool IsValid()
{
     if ((string)Value != "")
     {
         return true;
     }
     else
     {
         // Sets the form control validation error message
         this.ValidationError = "Please choose a color.";
         return false;
     }
}

Внутри оператора else выполните проверку поля или выражений, которые вы хотите проверить, и верните сообщение на основе того, что вы проверяете.

...