0

我正在尝试创建一个简单的创建用户页面,其中包含用户详细信息和确认密码字段。

我有一个用户视图模型和一个用户类:

public class UserViewModel
{
    public User AccountUser { get; set; }
    [Required]
    [Compare("AccountUser.Password")]
    public string ConfirmPassword { get; set; }
}

[DisplayName("User Account")]
public class User
{
    [Required]
    [DisplayName("Username")]
    public string Username { get; set; }
    [Required]
    [DisplayName("Password")]
    public string Password { get; set; }
}

当在两个密码字段中输入不匹配的数据时,jQuery 将成功告诉我密码字段不匹配并且提交按钮不会返回到我的控制器。

但是,如果我匹配这两个字段,jQuery 将通过其验证,提交查询将返回到控制器。那时我ModelState.IsValid的被检查并返回 false 引用“找不到属性 AccountUser.Password”关于密码属性的错误。

我理解关注点分离模式,但是我试图理解为什么这段代码不起作用。

有人可以解释为什么在没有显示 jquery 验证消息后模型状态返回 false 吗?

4

2 回答 2

0

我认为你只能使用Compare属性 like [Compare("PropertyName")],而不是[Compare("Object.PropertyName")]- 正如错误所说:... cannot find the property Account.Password ....

你应该改变你的模型和你的属性,比如[Compare("Password")]

于 2013-08-07T07:57:48.863 回答
0

这可能与您的回发有关,因此您的客户端验证正在工作,但数据并未完全返回到您的控制器。

在您的控制器中放置一些断点并检查它是否在您的 ViewModel 中为您的用户返回空值。

于 2013-08-07T07:02:58.797 回答