【发布时间】:2011-04-03 05:54:56
【问题描述】:
我有一个注册页面,用户可以在其中输入他的名字、姓氏、电子邮件和密码,以及其他字段。
我已将验证属性绑定到此模型(称为“用户”并通过 LINQtoSQL 创建)并且一切正常。
型号代码:
[MetadataType(typeof(UserValidation))]
public partial class User { }
[Bind(Exclude = "UserID")]
[PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirm password don't match.")]
public class UserValidation
{
[Required(ErrorMessage = "First name required"), StringLength(20, MinimumLength=3, ErrorMessage = "Must be between 3 and 20 characters")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last name required"), StringLength(20, MinimumLength = 3, ErrorMessage = "Must be between 3 and 20 characters")]
public string LastName { get; set; }
[Required(ErrorMessage = "Email address required"), RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage = "Must be a valid email address")]
public string Email { get; set; }
[Required(ErrorMessage = "Password required"), StringLength(20, MinimumLength = 6, ErrorMessage = "Password must be between 6 and 20 characters")]
public string Password { get; set; }
[Required(ErrorMessage = "Confirm password required"), StringLength(20, MinimumLength = 6, ErrorMessage = "Password must be between 6 and 20 characters")]
public string ConfirmPassword { get; set; }
}
注册和登录后,我希望用户能够在一个视图中编辑他们的名字、姓氏和电子邮件(我们称之为“帐户”字段),并在另一个视图中编辑“密码”。这就是我的问题所在。
当我通过注册中使用的同一模型(“用户”)提交更新帐户字段数据的表单时,IsValid 方法会针对缺少的“密码”字段显示 ModelState 错误。
控制器代码:
//
// GET /Talent/Account
public ActionResult Account()
{
string cookieUser = User.Identity.Name;
User user = userRepository.GetUserByEmail(cookieUser);
return View(user);
}
// POST /Talent/Account
[HttpPost]
public ActionResult Account(User model)
{
if (ModelState.IsValid)
{
// do something
ModelState.AddModelError("", "All good.. "+ model.FirstName + " - " + model.LastName);
}
return View(model);
}
我怎样才能解决这个问题?最佳实践等...
【问题讨论】:
标签: c# asp.net-mvc linq-to-sql model