加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 不为CompareAttribute DataAnnotation触发客户

发布时间:2020-12-16 03:41:10 所属栏目:asp.Net 来源:网络整理
导读:我正在布局一个比较两个密码字符串的视图.我的一个模型中的两个属性非常简单: [Required] [RegularExpression(@"(S)+",ErrorMessage = "White space is not allowed")] [StringLength(20,MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name
我正在布局一个比较两个密码字符串的视图.我的一个模型中的两个属性非常简单:

[Required]
    [RegularExpression(@"(S)+",ErrorMessage = "White space is not allowed")]
    [StringLength(20,MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "New Password")]
    public string NewPassword { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [RegularExpression(@"(S)+",MinimumLength = 6)]
    [Display(Name = "Confirm Password")]
    [Compare("NewPassword",ErrorMessage = "The new password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }

这是我的观看代码:

<table class="fieldset center" width="400">
    <tbody>
        <tr>
            <th width="150">
                @Html.LabelFor(m => m.NewPassword)
            </th>
            <td>
                @Html.PasswordFor(m => m.NewPassword,new { @class = "itext3" })
                <br /><br />@Html.ValidationMessageFor(m => m.NewPassword)
            </td>
        </tr>                       
        <tr>
            <th width="150">
                @Html.LabelFor(m => m.ConfirmPassword)
            </th>
            <td>
                @Html.PasswordFor(m => m.ConfirmPassword,new { @class = "itext3" })
                <br /><br />@Html.ValidationMessageFor(m => m.ConfirmPassword)
            </td>
        </tr>
    </tbody>
</table>

测试时,所有属性都会触发客户端验证消息,但ConfirmPassword上的CompareAttribute除外,直到我点击服务器才触发.但是,在我的控制器中,ModelState.IsValid = false.

我将我正在做的事情与正常工作的默认MVC应用程序进行了比较.有关故障排除和修复的建议吗?

我正在使用MVC 3 RTM.

解决方法

看一下_Layout.cshtml中的脚本标签.我猜这个问题可能是你的jQuery引用.您是否从头开始创建MVC 3项目,或者您正在使用示例项目或类似项目?

这就是发生在我身上的事情;我有类似的问题……

>我在src属性中使用了一些指向ajax.microsoft.com的示例代码
>因此,例如,其中一个脚本标记如下所示:< script src =“http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js”>< /脚本>
>我想更好地处理js在客户端执行的操作,因此我将其更改为:< script src =“@ Url.Content(”?/ Scripts / jquery.validate.min.js“)”类型= “文本/ JavaScript的” >< /脚本>
>这只是一个例子,我认为还有一些脚本标签我也改变了

因此,在更改为内部提供的jQuery文件后,它可以工作.我回去看了看我当地的.validate.js文件……它是版本1.6.这就是我如何意识到问题是由于jQuery的版本或者它与其他js libs的兼容性.

最重要的是,看起来1.7并没有完全发挥我所拥有的validate.unobtrusive.js库…可能有一个更新的版本可以使用1.7 …就像我说的那样,我正在摆弄一个示例项目,所以有一些未知数.我想它也可能与它和其他一个js lib之间的MvcValidation.js lib不兼容?

无论如何,我要说最简单的说明问题的方法是你最有可能引用js libs的错误组合.我说最好的故障安全方法来获得js libs的良好组合是在Visual Studio中创建一个新的Asp.Net MVC 3项目并查看它默认情况下给你的版本/项目模板……这是假设的你没有从头开始项目.如果您从头开始DID,那么可能是您更改了布局文件以获得错误的js引用,或者如果这些都不是真的那么我认为它可能是VisualStudio项目模板的问题?…实际上我会说但是很可疑.所有这些都说 – 我说最有可能的原因[无论如何我都打赌]就是你遇到了麻烦,就像我试图快速使用一些示例代码=)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读