Model view controller 比较验证器有错误吗

Model view controller 比较验证器有错误吗,model-view-controller,asp.net-mvc-3,c#-4.0,Model View Controller,Asp.net Mvc 3,C# 4.0,这是非常基本的,但在比较验证时总是返回false。还有其他人遇到这个问题吗 public class UsersRegisterUserViewModel { [DisplayName("E-Mail Address")] [Required(ErrorMessage = "E-Mail Address is required")] [RegularExpression(@"^[A-Za-z0-9_\-\.]+@(([A-Za-z0-9\-])+\.)+([A-Za-z

这是非常基本的,但在比较验证时总是返回false。还有其他人遇到这个问题吗

 public class UsersRegisterUserViewModel
{
    [DisplayName("E-Mail Address")]
    [Required(ErrorMessage = "E-Mail Address is required")]
    [RegularExpression(@"^[A-Za-z0-9_\-\.]+@(([A-Za-z0-9\-])+\.)+([A-Za-z\-])+$", ErrorMessage = "Invalid E-mail Address")]
    public string RegUsername { get; set; }

    [Required]
    [Display(Name = "Password")]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Required]
    [Display(Name = "Confirm Password")]
    [Compare("Password", ErrorMessage = "Passwords must match")]
    [DataType(DataType.Password)]
    public string RegConfirmPassword { get; set; }
}

嗯,不,我没有遇到这样的问题。我刚刚测试了下面的代码,它工作得非常好

型号:

public class UsersRegisterUserViewModel
{
    [DisplayName("E-Mail Address")]
    [Required(ErrorMessage = "E-Mail Address is required")]
    [RegularExpression(@"^[A-Za-z0-9_\-\.]+@(([A-Za-z0-9\-])+\.)+([A-Za-z\-])+$", ErrorMessage = "Invalid E-mail Address")]
    public string RegUsername { get; set; }

    [Required]
    [Display(Name = "Password")]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Required]
    [Display(Name = "Confirm Password")]
    [Compare("Password", ErrorMessage = "Passwords must match")]
    [DataType(DataType.Password)]
    public string RegConfirmPassword { get; set; }
}
控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new UsersRegisterUserViewModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(UsersRegisterUserViewModel model)
    {
        return View(model);
    }
}
视图:

@model users注册器userviewmodel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.RegUsername)
@EditorFor(x=>x.RegUsername)
@Html.ValidationMessageFor(x=>x.RegUsername)
@LabelFor(x=>x.Password)
@EditorFor(x=>x.Password)
@Html.ValidationMessageFor(x=>x.Password)
@LabelFor(x=>x.RegConfirmPassword)
@EditorFor(x=>x.RegConfirmPassword)
@Html.ValidationMessageFor(x=>x.RegConfirmPassword)
}

现在的问题是:您的代码与我的代码有何不同?

MVC3比较属性在独立于帐户控制器比较密码时存在缺陷。它似乎被硬编码为只与账户控制员一起工作。
adapters.add("equalto", ["other"], function (options) {
    var prefix = getModelPrefix(options.element.name),
        other = options.params.other,
        fullOtherName = appendModelPrefix(other, prefix),
        //element = $(options.form).find(":input[name=" + fullOtherName + "]")[0];
        element = $(options.form).find(":input[name='" + fullOtherName + "']")[0];
1.将RegisterModel中的电子邮件、密码、确认密码剪切并传递到名为ViewModels/ShortRegister.cs的新文件中 2.将razor代码(电子邮件、密码、确认密码)从register视图中剪切出来,并将其转换为部分视图,称之为“\u shortRegistration”。 3.创建一个名为“ShortRegistration”的新控制器。将部分视图添加到短注册中。 5.添加相关的jquery脚本

  • 在主页上创建指向ShortRegistration的链接
  • 确认错误消息始终触发错误消息
  • 从部分查看确认中删除电子邮件,比较功能将正常工作
  • 将用户名添加到部分视图和视图模型,比较功能失败,再次密码确认错误消息始终显示错误消息

  • 这个错误被修复了吗?我禁用了Compare属性,并编写了jquery和CCS来修复这个问题!我非常乐意通过电子邮件发送代码来证明Compare是有缺陷的。

    从哪里可以获得最新版本的MS支持的Jquery libs?@CrazyCoderz,来自VS2010=>我只是使用默认模板创建了一个新的ASP.NET MVC 3项目(我已经安装了工具更新)。修复一些引用将起到惊人的作用。。天啊,我想要回我的3个小时:)在我安装了工具更新之后,我可能还没有更新这个项目的脚本目录。将创建一个骨架项目并获取脚本在从骨架项目复制脚本后,我仍然遇到相同的问题。我复制了带有固定引号的脚本,它可以正常工作。我正在使用局部视图进行注册,但不确定这会有什么不同。不!更新工具更新后的脚本仍然收支平衡。更新工具发布了一个修复程序,如果您需要code.yep,请告诉我-有相同的问题
    adapters.add("equalto", ["other"], function (options) {
        var prefix = getModelPrefix(options.element.name),
            other = options.params.other,
            fullOtherName = appendModelPrefix(other, prefix),
            //element = $(options.form).find(":input[name=" + fullOtherName + "]")[0];
            element = $(options.form).find(":input[name='" + fullOtherName + "']")[0];