Ошибка валидатора сравнения - PullRequest
1 голос
/ 14 июня 2011

Это очень простой, но он всегда возвращает 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; }
}

Ответы [ 3 ]

1 голос
/ 14 июня 2011
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 голос
/ 19 июля 2011

MVC3 Атрибут сравнения содержит ошибки при сравнении паролей независимо от Account Controller. Кажется, это жестко запрограммировано только для работы с контроллером учетной записи.
1. Вырежьте и отправьте письмо, пароль, подтвердите пароль от RegisterModel в новый файл с именем ViewModels / ShortRegister.cs 2. Вырежьте бритвенный код (электронная почта, пароль, подтвердите пароль) из представления реестра и вставьте его в частичное представление, назовите его «_shortRegistration». 3. Создайте новый контроллер с именем «ShortRegistration». Добавьте частичное представление в ShortRegistation. 5. Добавьте связанные скрипты jquery

  1. Создайте ссылку на главной странице для ShortRegistration.
  2. Сообщение об ошибке подтверждения всегда запускает сообщение об ошибке.
  3. Удалите письмо из подтверждения частичного просмотра, работает функция сравнения.
  4. Добавление имени пользователя к частичному представлению и модели представления, сбой функции сравнения, снова сообщение об ошибке подтверждения пароля всегда отображает сообщение об ошибке.

Исправлена ​​ли эта ошибка? Я отключил атрибут сравнения и написал jquery и CCS, чтобы это исправить! Я более чем счастлив отправить код по электронной почте, чтобы доказать, что Compare содержит ошибки.

0 голосов
/ 14 июня 2011

Хм, нет, я не сталкиваюсь с такими проблемами.Я только что протестировал следующий код, и он работал отлично, как и ожидалось.

Модель:

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" />
}

Итак, теперь возникает вопрос: чем ваш код отличается от моего?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...