Проверка полей формы в Blazor Serverside вручную с ошибками - PullRequest
0 голосов
/ 04 февраля 2020

Мне нужно выбрать, когда проверять определенные поля модели в компоненте Blazor, особенно при отправке. Итак, мне нужно выяснить, как вручную проверять значения модели, чтобы я мог использовать встроенные обработчики ошибок для обработки отображения ошибок.

Пример:

If you choose RadioValue: type A  
    only validate Textfield 1,  
    do not validate Textfield 2, Textfield 3  
If you choose RadioValue: type B  
    validate Textfield 1, Textfield 2, and Textfield 3  
If you choose RadioValue: type C  
    validate no fields  

Любые поля не являются проверенные устанавливаются за кулисами при отправке.

Дополнительные примечания:

  • Использование пользовательских компонентов радиовхода, поскольку MS их не предоставляет. Однако у них есть пример одного в их документах , так что мой по сути является его клоном.

  • Я пытался прослушивать события с помощью OnFieldsChanged, чтобы получить поля, но у меня нет способа A) Проверка определенной модели c B) Обеспечение сообщения об ошибке связано с этой моделью и работает с компонентом ValidationMessage.

  • Кажется Я могу только проверить, является ли eveything действительным, используя EditContext.Validate (), но я не могу выбрать, что проверять.

  • Также, если бы я мог проверить с атрибутами и без, это сделало бы все проще.

версия проверки MS на отдельном сервере, я бы предпочел то же приложение, но они не объясняют, как они проверяют значения и возвращают ошибку.

<EditForm EditContext="@_editContext" OnSubmit="@HandleSubmit">

    ...

    <button type="submit">Submit</button>
</EditForm>

@code {
    private Starship _starship = new Starship();
    private EditContext _editContext;

    protected override void OnInitialized()
    {
        _editContext = new EditContext(_starship);
    }

    private async Task HandleSubmit()
    {
        var isValid = _editContext.Validate() && 
            await ServerValidate(_editContext);

        if (isValid)
        {
            ...
        }
        else
        {
            ...
        }
    }

    private async Task<bool> ServerValidate(EditContext editContext)
    {
        var serverChecksValid = ...

        return serverChecksValid;
    }
}

Вскоре я приведу пример своего кода, чтобы предоставить больше контекста, но я надеюсь, что, возможно, его можно решить без него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...