我用一些额外的自定义属性创建了一个新的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 帮助程序应了解哪些字段是必需的,哪些不是,这意味着您可以同时获得客户端验证和服务器端验证:)