我的网站上有一个使用这些模型类的设置页面:
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
文件中,我定义了两种形式——一种提交给EditName
,一种提交给EditPassword
。这是一个大文件,所以这里是一个小摘录:
@Html.EditorFor(model => model.Password.OldPassword)
@Html.ValidationFor(model => model.Password.OldPassword)
我的问题是:如何ValidationFor
显示我在方法中添加的错误消息EditPassword
?我尝试使用 的键"Password.OldPassword"
,但这不起作用。
或者,我在这里采取了错误的方法吗?我应该如何处理在同一页面上有两个表单?