asp.net-mvc-3 - 即使密码相同,比较验证器也总是会触发

标签 asp.net-mvc-3 unobtrusive-javascript

这就是原因。这是生成的 HTML:

    <div>
        <label for="RegisterModel_Password">Contrase&#241;a</label>
        <input class="text-box single-line password" data-val="true" data-val-length="Su Contrase&amp;#241;a debe tener al menos 6 caracteres." data-val-length-max="100" data-val-length-min="6" data-val-required="Debe escribir su contrase&amp;#241;a" id="RegisterModel_Password" name="RegisterModel.Password" type="password" value="" />
        <span class="field-validation-valid" data-valmsg-for="RegisterModel.Password" data-valmsg-replace="true"></span>

    </div>

    <div>
        <label for="RegisterModel_ConfirmPassword">Confirme Su Contrase&#241;a</label>
        <input class="text-box single-line password" data-val="true" data-val-equalto="Sus contrase&amp;#241;as no son las mismas." data-val-equalto-other="*.Password" id="RegisterModel_ConfirmPassword" name="RegisterModel.ConfirmPassword" type="password" value="" />
        <span class="field-validation-valid" data-valmsg-for="RegisterModel.ConfirmPassword" data-valmsg-replace="true"></span>
    </div>

请注意,在确认密码框中:
data-val-equalto-other="*.Password"

这应该是 RegisterModel.Password ,因为我猜 javascript 看起来像名称为“RegisterModel.Password”的输入,不是吗?

这是我的模型代码:
[Required(ErrorMessage = "Debe escribir su contraseña")]
[StringLength(100, ErrorMessage = "Su {0} debe tener al menos {2} caracteres.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Contraseña")]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirme Su Contraseña")]
[Compare("Password", ErrorMessage = "Sus contraseñas no son las mismas.")]
public string ConfirmPassword { get; set; }

关于为什么会发生这种情况的任何想法?

刚刚创建了一个全新的 MVC3 应用程序,这是模型:
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }

并且验证有效。这里唯一的区别是它们直接在 View 中使用模型,而我传递的是包含该 RegisterModel 的 *View*Model。

不过,这个工作默认值的 HTML 与我的不同:
        <div class="editor-field">
            <input data-val="true" data-val-length="The Password must be at least 6 characters long." data-val-length-max="100" data-val-length-min="6" data-val-required="The Password field is required." id="Password" name="Password" type="password" />
            <span class="field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span>
        </div>

        <div class="editor-label">
            <label for="ConfirmPassword">Confirm password</label>
        </div>
        <div class="editor-field">
            <input data-val="true" data-val-equalto="The password and confirmation password do not match." data-val-equalto-other="*.Password" id="ConfirmPassword" name="ConfirmPassword" type="password" />
            <span class="field-validation-valid" data-valmsg-for="ConfirmPassword" data-valmsg-replace="true"></span>
        </div>

最佳答案

你好我遇到了和你一样的问题。发生这种情况是因为执行验证的 javascript 文件存在错误。这是您必须进行的修复。

http://forums.asp.net/t/1716181.aspx/1

在最小化版本中并不难找到,这是我必须更改的。

致敬!

关于asp.net-mvc-3 - 即使密码相同,比较验证器也总是会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7100058/

相关文章:

javascript - 可以在文档头中使用不显眼的 Javascript 事件吗?

javascript - 动态创建的元素上的事件绑定(bind)?

JavaScript 日期函数在 Firefox 浏览器中返回 "Date {Invalid Date}"

asp.net - 在 Razor 难度中分配值(value)

c# - 在 ASP.NET MVC 中填充下拉列表

asp.net-mvc - Visual Studio 中的单元测试 MVC Web 应用程序和 QTAgent 问题

asp.net-mvc - Asp.Net MVC Html Helper 扩展

jquery - 输入绑定(bind)出现未捕获错误 "NO_MODIFICATION_ALLOWED_ERR"

jquery - 如何防止mooTools和Prototype之间的冲突

c# - ASP.NET MVC3 : ValidationMessageFor on new line