gpt4 book ai didi

c# - 只读输入属性和 [Required] 数据注释的验证错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:50 26 4
gpt4 key购买 nike

正如我们所知,当您使用 Individual User Authentication 项目模板创建 ASP.NET Core appp 时,它会创建一个默认的 ResetPassword.cshtml View 。在该 View 中,我需要将登录用户名输入标签设置为 readonly。但是这样做会抛出以下验证错误。如果我没有设置为readonly,下面的屏幕会成功地允许用户更改密码。

问题:当 UserName 输入标签设置为 readonly 时,为什么在表单提交时出现以下验证错误?我知道如果输入标签被禁用,则表单提交不会提交输入标签的值(也由 @AdamBellaire here 解释)。似乎 [Required] 注释在 public string UserName { get;放; 与输入标签的只读属性有某种冲突。

enter image description here

public class ResetPasswordViewModel
{
[Required]
public string UserName { get; set; }

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }

public string Code { get; set; }
}

更新

ResetPassword.cshtml:[这是VS2017创建的默认View。唯一的变化是我在下面的输入标签中添加了 readonly 属性]

@model ResetPasswordViewModel
...
<input asp-for="@User.Identity.Name" class="form-control" readonly />
...

最佳答案

在这种情况下,期望 View 中的 @User.Identity.Name 绑定(bind)到 View 模型中的 UserName 确实没有意义。

看来IDE生成的代码是错误的。也许某个地方的脚手架模板搞砸了,谁知道呢。

您需要将asp-for 更改为等于UserName。见下文。

<input asp-for="UserName" class="form-control" readonly />

很高兴这对您有所帮助!

关于c# - 只读输入属性和 [Required] 数据注释的验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44765433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com