私のサイトには、これらのモデル クラスを使用する設定ページがあります。
public class NameVm
{
public string GivenName { get; set; }
public string FamilyName { get; set; }
}
public class PasswordVm
{
public string OldPassword { get; set; }
public string NewPassword { get; set; }
public string ConfirmPassword { get; set; }
}
public class AccountVm
{
public NameVm Name { get; set; }
public PasswordVm Password { get; set; }
}
これはコントローラーです:
public class AccountController : Controller
{
[HttpGet]
public override ActionResult Index()
{
var accountVm = AccountVmFromActiveUser();
return View(accountVm);
}
[HttpPost]
public ActionResult EditName(NameVm vm)
{
...
}
[HttpPost]
public ActionResult EditPassword(PasswordVm vm)
{
if (ModelState.IsValid)
{
if (!ValidateUser(this.ActiveUser, vm.OldPassword))
{
ModelState.AddModelError("????",
"Existing password is incorrect.");
}
else
UpdateUserPassword(vm);
}
var accountVm = AccountVmFromActiveUser();
accountVm.Password = vm;
return View(accountVm);
}
}
私のAccount.cshtml
ファイルでは、2 つのフォームを定義しEditName
ていますEditPassword
。これは大きなファイルなので、ここに小さな抜粋を示します。
@Html.EditorFor(model => model.Password.OldPassword)
@Html.ValidationFor(model => model.Password.OldPassword)
私の質問は:メソッドValidationFor
に追加したエラー メッセージを表示するにはどうすればよいですか? EditPassword
のキーを使用してみました"Password.OldPassword"
が、うまくいきませんでした。
または、ここで間違ったアプローチを取っていますか? 同じページに 2 つのフォームがある場合、どのように処理すればよいですか?