是比较验证窃听(Is the Compare Validator Bugged)

2019-09-30 03:18发布

这是很基本的,但它总是返回的比较验证错误。 任何人在运行这个问题?

 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; }
}

Answer 1:

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];


Answer 2:

MVC3比较属性是越野车独立账户控制器的比较密码时。 现在看来,这是硬编码只与帐户控制工作。
1.剪切和过去的电子邮件,密码,确认从RegisterModel密码到一个新的文件名为的ViewModels / ShortRegister.cs 2.切剃刀代码(电子邮件,密码,确认密码)从寄存器视图和过去它变成局部视图,称之为“_shortRegistration ”。 3.创建一个名为“ShortRegistration”新的控制器。 添加局部视图进入ShortRegistation。 5.添加相关的jQuery脚本

  1. 创建于ShortRegistration主页上的链接。
  2. 确认错误信息始终闪光的错误消息。
  3. 取下部分观看确认的电子邮件时,比较功能的工作原理。
  4. 添加用户名的局部视图,视图模型,比较功能失败,再次确认密码错误信息一直显示错误消息。

有这个bug被修复? 我禁用比较属性并写了jQuery和CCS解决这个问题! 我很乐意以电子邮件的代码,以证明是比较马车。



Answer 3:

嗯,没有,我还没有遇到这样的问题。 我刚刚测试了下面的代码和它的工作如预期完美的罚款。

模型:

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 UsersRegisterUserViewModel

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

@using (Html.BeginForm())
{
    <div>
        @Html.LabelFor(x => x.RegUsername)
        @Html.EditorFor(x => x.RegUsername)
        @Html.ValidationMessageFor(x => x.RegUsername)
    </div>

    <div>
        @Html.LabelFor(x => x.Password)
        @Html.EditorFor(x => x.Password)
        @Html.ValidationMessageFor(x => x.Password)
    </div>

    <div>
        @Html.LabelFor(x => x.RegConfirmPassword)
        @Html.EditorFor(x => x.RegConfirmPassword)
        @Html.ValidationMessageFor(x => x.RegConfirmPassword)
    </div>

    <input type="submit" value="OK" />
}

所以,现在的问题是:如何是你的代码比我有什么不同?



文章来源: Is the Compare Validator Bugged