Включение проверки обязательного атрибута только после нажатия на поле - PullRequest
0 голосов
/ 20 июня 2020

Если у меня есть следующие свойства viemodel:

public class ExampleViewModel
{
    [Required(ErrorMessage = "The email field is required.")]
    [EmailAddress(ErrorMessage ="Please enter a valid email address")]
    public string Email { get; set; }
    [Required(ErrorMessage = "The first name field is required.")]
    [RegularExpression("^[a-zA-Z\\-]+$", ErrorMessage="Please enter a valid name")]
    public string Forename { get; set; }
    [Required(ErrorMessage = "The last name field is required.")]
    [RegularExpression("^[a-zA-Z\\-]+$", ErrorMessage = "Please enter a valid name")]
    public string Surname { get; set; }
}

Тогда как мне включить только обязательные поля во внешнем интерфейсе ТОЛЬКО после того, как поля щелкнули, а оттуда щелкнули?

В настоящее время сообщения об ошибках представляются зрителю сразу:

Пример:

На внешней странице Razor используется проверка blazorise, которая проверяется только в том случае, если все поля имеют заполнено:

<Form method="post">
<Validations Mode="ValidationMode.Auto" Model="@ExampleViewModel" ValidatedAll="IsInvalid">
<Validation>
    <Blazorise.Field>
        <Blazorise.FieldLabel Class="is-bold">Email address</Blazorise.FieldLabel>
        <Blazorise.TextEdit Placeholder="Enter email" @bind-Text="@ContactDetails.Email" MaxLength=40>
            <Feedback>
                <ValidationError />
            </Feedback>
        </Blazorise.TextEdit>
    </Blazorise.Field>
</Validation>
<Row>
    <Blazorise.Title Size="10">Your Details</Blazorise.Title>
</Row>
<Validation>
    <Blazorise.Field>
        <Blazorise.FieldLabel Class="is-bold">First name</Blazorise.FieldLabel>
        <Blazorise.TextEdit Placeholder="John" @bind-Text="@ContactDetails.Forename" MaxLength=40>
            <Feedback>
                <ValidationError/>
            </Feedback>
        </Blazorise.TextEdit>
    </Blazorise.Field>
</Validation>
<Validation>
    <Blazorise.Field>
        <Blazorise.FieldLabel Class="is-bold">Last name</Blazorise.FieldLabel>
        <Blazorise.TextEdit Placeholder="Doe" @bind-Text="@ContactDetails.Surname" MaxLength=40>
            <Feedback>
                <ValidationError />
            </Feedback>
        </Blazorise.TextEdit>
    </Blazorise.Field>
</Validation>

Ответы [ 2 ]

1 голос
/ 22 июня 2020

Эта функция будет доступна в следующей версии v0.9.1.

0 голосов
/ 20 июня 2020

Возможно, это может помочь: RequiredIf Атрибут условной проверки

Если вы хотите работать с аннотацией данных, вы можете создать логическое свойство в своей модели представления, которое указывает, следует ли вам проверять требуемые или нет.

public bool HasUserClicked { get; set; }

[RequiredIf(nameof("HasUserClicked",true)
public string MyProperty{ get; set; }

Когда пользователь щелкает, вы переключаете это логическое значение.

Edit Не уверен, что это будет работать с Blazor, кстати ... И если вы хотите иметь больше условной проверки, возможно, вам стоит рассмотреть FluentValidation .

...