C# 用于确认密码的比较数据批注不一致
我有一个简单的登记表,上面有密码确认,你只需重复密码,你就知道了 现在,为了检查密码是否相同,我使用名为Compare的数据注释C# 用于确认密码的比较数据批注不一致,c#,asp.net,.net,data-annotations,blazor,C#,Asp.net,.net,Data Annotations,Blazor,我有一个简单的登记表,上面有密码确认,你只需重复密码,你就知道了 现在,为了检查密码是否相同,我使用名为Compare的数据注释 [Required(ErrorMessage = "Password is required")] [MinLength(4, ErrorMessage = "Must be at least 4 characters")] [DataType(DataType.Password)] public string Password { g
[Required(ErrorMessage = "Password is required")]
[MinLength(4, ErrorMessage = "Must be at least 4 characters")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required(ErrorMessage = "Password confirmation is required")]
[MinLength(4, ErrorMessage = "Must be at least 4 characters")]
[DataType(DataType.Password)]
[Compare(nameof(Password), ErrorMessage = "Passwords should be the same.")]
public string PasswordConfirm { get; set; }
形式基本上是这样的:
<EditForm class="form-signin" OnValidSubmit="OnSubmit" Model="registerParameters">
<DataAnnotationsValidator />
<h4 class="font-weight-normal text-center">Create Account</h4>
<label for="inputUsername" class="sr-only">User Name</label>
<InputText id="inputUsername" class="form-control" placeholder="Username" autofocus @bind-Value="@registerParameters.UserName" />
<ValidationMessage For="@(() => registerParameters.UserName)" />
<label for="inputPassword" class="sr-only">Password</label>
<InputText type="password" id="inputPassword" class="form-control" placeholder="Password" @bind-Value="@registerParameters.Password" />
<ValidationMessage For="@(() => registerParameters.Password)" />
<label for="inputPasswordConfirm" class="sr-only">Password Confirmation</label>
<InputText type="password" id="inputPasswordConfirm" class="form-control" placeholder="Password Confirmation" @bind-Value="@registerParameters.PasswordConfirm" />
<ValidationMessage For="@(() => registerParameters.PasswordConfirm)" />
<button class="btn btn-lg btn-primary btn-block" type="submit">Create account</button>
<label class="text-danger">@error</label>
<NavLink href="login">
<h6 class="font-weight-normal text-center">Already have an account? Click here to login</h6>
</NavLink>
</EditForm>
@functions{
RegisterParametersDto registerParameters { get; set; } = new RegisterParametersDto();
dynamic dyn;
string error { get; set; }
async Task OnSubmit()
{
error = null;
try
{
await authStateProvider.Register(registerParameters);
navigationManager.NavigateTo("");
}
catch (Exception ex)
{
dyn = JsonConvert.DeserializeObject(ex.Message);
error = dyn.errorMessage;
}
}
}
创建帐户
用户名
密码
密码确认
创建帐户
@错误
已经有账户了吗?单击此处登录
@功能{
RegisterParametersTo registerParameters{get;set;}=new RegisterParametersTo();
动态dyn;
字符串错误{get;set;}
异步任务OnSubmit()
{
错误=null;
尝试
{
等待authStateProvider.Register(registerParameters);
navigationManager.NavigateTo(“”);
}
捕获(例外情况除外)
{
dyn=JsonConvert.DeserializeObject(例如Message);
error=dyn.errorMessage;
}
}
}
现在,只要这些密码不匹配,它就会正确地显示错误消息,但当我尝试提交时,它就会完全消失。我怎样才能解决这个问题
编辑:
我要补充一点,compare注释是唯一一个这样做的注释。如果密码确认太短,则会显示正确的错误,并且在按下提交按钮后不会消失。此后,我为fluent validation更改了数据注释,它工作得很好,错误也消失了,因此我想这是改用fluent validation的另一个原因。对不起,但这里的实际问题是什么?对不起,我按了回车键,在问题还没有完成时意外地提交了问题。我找不到删除选项,所以我希望在任何人看到之前及时编辑它。现在它完成了。编辑:现在它出于某种原因出现了。我发誓删除按钮不在那里!当你说“它完全消失”时,什么消失了?说这些密码不匹配的错误消息消失了,并且不会返回,除非我在这两个密码中至少添加一个字符。