예제 #1
0
        public async Task <bool> PostsForm(ValidateForm form, string url, Func <string, string> Msg = null, Action <ErrorObj> ErrorHandler = null, HttpMethodEnum method = HttpMethodEnum.POST)
        {
            var rv = await WtmBlazor.Api.CallAPI(url, method, form.Model);

            if (rv.StatusCode == System.Net.HttpStatusCode.OK)
            {
                if (Msg != null)
                {
                    var m = Msg.Invoke(rv.Data);
                    await WtmBlazor.Toast.Success(WtmBlazor.Localizer["Sys.Info"], WtmBlazor.Localizer[m]);
                }
                CloseDialog(DialogResult.Yes);
                return(true);
            }
            else
            {
                ErrorHandler?.Invoke(rv.Errors);
                if (rv.Errors == null)
                {
                    await WtmBlazor.Toast.Error(WtmBlazor.Localizer["Sys.Error"], rv.StatusCode.ToString());
                }
                else
                {
                    SetError(form, rv.Errors);
                }
                return(false);
            }
        }
예제 #2
0
        private static void Main3()
        {
            var form = new ValidateForm(new GetQuestionListResponse
            {
                IsSuccess     = true,
                QuestionTitle = "11122222222233333333333344444",
                QuestionList  = new List <QuestionDto>()
                {
                    new QuestionDto()
                    {
                        Id = 1, QuestionContent = "11111111111", QuestionType = 1
                    },
                    new QuestionDto()
                    {
                        Id = 2, QuestionContent = "222222222222", QuestionType = 1
                    },
                    new QuestionDto()
                    {
                        Id = 3, QuestionContent = "3333333333333", QuestionType = 1
                    },
                }
            });

            form.ShowDialog();

            var result = form.AnswerQuestionItems;

            Application.Run();
        }
예제 #3
0
    /// <summary>
    /// OnInitialized 方法
    /// </summary>
    protected override void OnInitialized()
    {
        base.OnInitialized();

        OnClickButton = EventCallback.Factory.Create <MouseEventArgs>(this, async() =>
        {
            if (IsAsync && ButtonType == ButtonType.Button)
            {
                IsAsyncLoading = true;
                ButtonIcon     = LoadingIcon;
                IsDisabled     = true;
            }

            Exception?exception = null;
            try
            {
                if (IsAsync)
                {
                    await Task.Run(() => InvokeAsync(HandlerClick));
                }
                else
                {
                    await HandlerClick();
                }
            }
            catch (Exception ex)
            {
                exception = ex;
            }

            // 恢复按钮
            if (IsAsync && ButtonType == ButtonType.Button)
            {
                ButtonIcon     = Icon;
                IsDisabled     = false;
                IsAsyncLoading = false;
            }

            if (exception != null)
            {
                // 如果有异常发生强制按钮恢复
                StateHasChanged();
                throw exception;
            }
        });

        if (IsAsync && ValidateForm != null)
        {
            // 开启异步操作时与 ValidateForm 联动
            ValidateForm.RegisterAsyncSubmitButton(this);
        }
    }
예제 #4
0
 public async void SetError(ValidateForm form, ErrorObj errors)
 {
     if (errors != null)
     {
         foreach (var item in errors.Form)
         {
             form.SetError(item.Key, item.Value);
         }
         if (errors.Message != null && errors.Message.Count > 0)
         {
             await WtmBlazor.Toast.Error(WtmBlazor.Localizer["Sys.Error"], errors.Message[0]);
         }
     }
 }
예제 #5
0
        public void ValidateDataOnCard(TextBox dataCardTextBox, string initializeString, Form parent)
        {
            if (IsValid(dataCardTextBox, "Datacard"))
            {
                CurrentState = State.StateValidating;

                IList <AgGateway.ADAPT.ApplicationDataModel.ADM.IError> errors = _dataProvider.ValidateDataOnCard(dataCardTextBox.Text, initializeString);

                ValidateForm validateForm = new ValidateForm();
                validateForm.LoadData(errors);
                validateForm.ShowDialog(parent);

                CurrentState = State.StateIdle;
            }
        }
예제 #6
0
    private static async Task ValidateField(this ValidateForm editForm, EditContext editContext, ValidationMessageStore messages, FieldChangedEventArgs args)
    {
        // 获取验证消息
        var validationResults = new List <ValidationResult>();
        var validationContext = new ValidationContext(args.FieldIdentifier.Model)
        {
            MemberName  = args.FieldIdentifier.FieldName,
            DisplayName = args.FieldIdentifier.GetDisplayName()
        };

        await editForm.ValidateFieldAsync(validationContext, validationResults);

        messages.Clear(args.FieldIdentifier);
        messages.Add(args.FieldIdentifier, validationResults.Where(v => !string.IsNullOrEmpty(v.ErrorMessage)).Select(result => result.ErrorMessage !));

        editContext.NotifyValidationStateChanged();
    }
예제 #7
0
    private static async Task ValidateModel(this ValidateForm editForm, EditContext?editContext, ValidationMessageStore messages)
    {
        if (editContext != null)
        {
            var validationContext = new ValidationContext(editContext.Model);
            var validationResults = new List <ValidationResult>();
            await editForm.ValidateObject(validationContext, validationResults);

            messages.Clear();
            foreach (var validationResult in validationResults.Where(v => !string.IsNullOrEmpty(v.ErrorMessage)))
            {
                foreach (var memberName in validationResult.MemberNames)
                {
                    messages.Add(editContext.Field(memberName), validationResult.ErrorMessage !);
                }
            }
            editContext.NotifyValidationStateChanged();
        }
    }
예제 #8
0
        private bool ValidateUser(UserInfo userInfo)
        {
            var listResponse = _updateServerListClient.GetQuestionList(new GetQuestionListRequest());

            if (listResponse.IsSuccess)
            {
                //提示用户回答问题
                var validateDlg = new ValidateForm(listResponse);

                validateDlg.ShowDialog();

                if (validateDlg.DialogResult == DialogResult.OK)
                {
                    //验证回答
                    var answerQuestionItems = validateDlg.AnswerQuestionItems;

                    var validateResponse = _updateServerListClient.AnswertQuestionList(new AnswertQuestionListRequest
                    {
                        AnswerQuestionList = answerQuestionItems
                    });

                    if (validateResponse.IsSuccess)
                    {
                        //登录
                        var result = Login(userInfo);
                        return(result);
                    }
                    else
                    {
                        MessageBox.Show(validateResponse.Message);
                    }
                }
            }

            return(false);
        }
예제 #9
0
    /// <summary>
    /// 添加数据合规检查
    /// </summary>
    /// <param name="editContext">The <see cref="EditContext"/>.</param>
    /// <param name="editForm"></param>
    public static EditContext AddEditContextDataAnnotationsValidation(this EditContext editContext, ValidateForm editForm)
    {
        var messages = new ValidationMessageStore(editContext);

        editContext.OnValidationRequested += async(sender, eventArgs) => await editForm.ValidateModel(sender as EditContext, messages);

        editContext.OnFieldChanged += async(sender, eventArgs) => await editForm.ValidateField(editContext, messages, eventArgs);

        return(editContext);
    }