Individual User Authentication
プロジェクトテンプレートを使用してASP.NET Core apppを作成すると、デフォルトのResetPassword.cshtml
ビューが作成されます。その中でView
私はreadonly
としてログインユーザー名入力タグを設定する必要があります。しかし、次のような検証エラーが発生します。私がそれを作っていなければ、readonly
以下の画面では、ユーザーはパスワードを変更することができます。読み取り専用入力属性と[必須]データでの検証エラー
質問:フォーム提出時に次の検証エラーが発生した理由 - UserName入力タグがreadonly
に設定されていると、入力タグが無効の場合、フォーム提出は入力タグの値を提出しません(また、@AdamBellaire
hereで説明されています)。 public string UserName { get; set; }
の[Required]
注釈は入力タグのreadonly属性と何らかの形で矛盾しているようです。
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; }
}
UPDATE
ResetPassword.cshtml
:[これは、VS2017で作成されたデフォルトのビューです。唯一の変化はI]は、以下のinputタグでは、このような状況で
@model ResetPasswordViewModel
...
<input asp-for="@User.Identity.Name" class="form-control" readonly />
...
[必須]をプロパティから削除してみませんか? – Will
@Willユーザーを作成したり、パスワードをリセットしたりするときには、まずユーザー名が必要です。私は 'Reset Password UI'で読み込み専用にしているので、ユーザーはそれを間違えないようにします。 – nam
名前を削除するためにフォームを変更するか、スパンに表示するだけですか?私はパスワードリセットが他の何かをする必要があるとは思わないでしょう... – Will