Umbraco 会员 - 如何在注册表中设置所需的自定义必填属性



我用一些额外的自定义属性创建了一个新的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"(时,在输入字段下会出现验证消息,说明这些字段是必需的。在我填写它们之前,注册无法进行。

就像标准字段电子邮件和密码一样。这是屏幕截图: https://i.ibb.co/z2cD3TC/immagine.png

如何检查这些字段是否为必填字段并显示错误消息?

您的字段在 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 帮助程序应了解哪些字段是必需的,哪些不是,这意味着您可以同时获得客户端验证和服务器端验证:)

最新更新