Член Umbraco - Как установить обязательное свойство, обязательное для заполнения в регистрационной форме? - PullRequest
0 голосов
/ 10 июня 2019

Я создал новый MemberType с некоторыми дополнительными пользовательскими свойствами, помеченными как обязательные .

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

В разделе Участник свойства правильно установлены как обязательные. Вот скриншот: https://i.ibb.co/bR4sd2v/immagine.png

Вот мой код регистрационной формы:

using (Html.BeginUmbracoForm<UmbRegisterController>("HandleRegisterMember"))
    {
        <div class="row justify-content-center no-gutters">
            <div class="col-8 mx-auto pt-5">
                @Html.ValidationSummary("registerModel", true)

                @if (registerModel.MemberProperties != null)
                {
                    <div class="form-row justify-content-center">
                        <div class="form-group col-md-6">
                            @Html.TextBoxFor(m => registerModel.MemberProperties[0].Value, new { @class = "form-control rounded-0", @placeholder = registerModel.MemberProperties[0].Name})
                            @Html.HiddenFor(m => registerModel.MemberProperties[0].Alias)
                            @Html.ValidationMessageFor(m => registerModel.MemberProperties[0].Alias)
                        </div>
                        <div class="form-group col-md-6">
                            @Html.TextBoxFor(m => registerModel.MemberProperties[1].Value, new { @class = "form-control rounded-0", @placeholder = registerModel.MemberProperties[1].Name})
                            @Html.HiddenFor(m => registerModel.MemberProperties[1].Alias)
                            @Html.ValidationMessageFor(m => registerModel.MemberProperties[1].Alias)
                        </div>
                    </div>

                }

                <div class="form-row justify-content-center pt-5">
                    <div class="form-group col-md-6">
                        @Html.TextBoxFor(m => registerModel.Email, new { @class = "form-control rounded-0", @placeholder = "Email"})
                        @Html.ValidationMessageFor(m => registerModel.Email)
                    </div>
                    <div class="form-group col-md-6">
                        @Html.PasswordFor(m => registerModel.Password, new { @class = "form-control rounded-0", @placeholder = "Password"})
                        @Html.ValidationMessageFor(m => registerModel.Password)
                    </div>
                </div>

                <div class="form-row justify-content-center pt-5">
                    <div class="form-group col-md-6">
                        <button class="btn btn-light text-uppercase w-100" type="submit">Registrati</button>
                    </div>
               </div>

            </div>
        </div>

        @Html.HiddenFor(m => registerModel.MemberTypeAlias)
        @Html.HiddenFor(m => registerModel.RedirectUrl)
        @Html.HiddenFor(m => registerModel.UsernameIsEmail)

    }

Я ожидаю, что когда я нажму на кнопку Sumbit (в моем случае это «Registrati»), под полями ввода появится проверочное сообщение о том, что эти поля обязательны для заполнения, И регистрация не может продолжаться, пока я не заполню их.

Как это происходит со стандартными полями Email и Password. Вот скриншот: https://i.ibb.co/z2cD3TC/immagine.png

Как проверить, являются ли эти поля обязательными, и показать сообщение об ошибке?

1 Ответ

0 голосов
/ 13 июня 2019

Ваши поля могут быть обязательными в Umbraco, но код в ваших представлениях этого не знает. Чтобы добиться проверки с помощью используемых вами HTML-помощников, вам необходимо создать ViewModel, например:

public class MyViewModel
{
    [Required(ErrorMessage = "Full name is required")]
    public string FullName { get; set; }

    [Required(ErrorMessage = "Email is required")]
    public string Email { get; set; }

    [Required(ErrorMessage = "Password is required")]
    [DataType(DataType.Password, ErrorMessage = "Password is invalid")]
    public string Password { get; set; }
}

Ваши HTML-помощники должны понимать, какие поля являются обязательными, а какие нет, что означает, что вы можете получить как проверку на стороне клиента, так и проверку на стороне сервера:)

...