新しく作成された MVC プロジェクトの [アカウント登録] ページで、情報を何も入力せずに [登録] ボタンをクリックすると、次のように表示されます。
•ユーザー名フィールドは必須です。
•パスワードフィールドは必須です。
これらはどこから来たのですか?
新しく作成された MVC プロジェクトの [アカウント登録] ページで、情報を何も入力せずに [登録] ボタンをクリックすると、次のように表示されます。
•ユーザー名フィールドは必須です。
•パスワードフィールドは必須です。
これらはどこから来たのですか?
(AccountController.cs内の)RegisterActionResultを見てください
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid) // here it will check it lal
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
ModelState.IsValidが表示されます。基本的にはチェックするか、モデルに検証の問題があります。
モデルはAccountModelsにあります
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "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; }
}
ご覧のとおり、両方ともrequireタグを取得しているため、falseが返され、その横に必須であることが表示されます(入力されていない場合)。
編集:なぜそれがそのテキストであり、他のテキストではないのかを知りたいので、それはデフォルトのテキストなので、マイクロソフトに尋ねてください:)とにかく、ErrorMessageパラメータをRequiredタグに追加することでテキストを好きなように変更できます。
例:
[Required(ErrorMessage = "Hey you forgot me!")]
実際のメッセージ文字列は、ビューで呼び出されたMvcHtmlString
ヘルパーメソッドによって呼び出されたメソッドSystem.Web.Mvc.ModelStateDictionary.
の戻り値です。ValidationExtensions
ValidationMessageFor()
上部にある[必須]の関連モデルを確認してください。