首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 3客户端比较验证

MVC 3客户端比较验证
EN

Stack Overflow用户
提问于 2011-07-15 22:34:36
回答 2查看 4.1K关注 0票数 3

这里发生了一些奇怪的事情。

我有一个基本的表格:

代码语言:javascript
复制
    <% using (Html.BeginForm())
       { %>
       <%: Html.LabelFor(model => model.user.email) %>
       <%: Html.TextBoxFor(model => model.user.email) %>
       <%: Html.ValidationMessageFor(model => model.user.email) %>
       <br />
       <%: Html.LabelFor(model => model.user.password) %>
       <%: Html.PasswordFor(model => model.user.password) %>
       <%: Html.ValidationMessageFor(model => model.user.password) %>
       <br />
       <%: Html.LabelFor(model => model.user.confirmPassword) %>
       <%: Html.PasswordFor(model => model.user.confirmPassword) %>
       <%: Html.ValidationMessageFor(model => model.user.confirmPassword) %>
       <br />
       <input type="submit" value="Submit" />
    <% } %>

该头部具有以下特点:

代码语言:javascript
复制
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<link rel="Stylesheet" type="text/css" href="/Content/Site.css" />
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>

ViewModel是这样的:

代码语言:javascript
复制
public class RegisterViewModel
{
    public RegisterUser user { get; set; }
}

public class RegisterUser
{
    [Required]
    [Display(Name = "Email Address")]
    public string email { get; set; }

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

    [Required]
    [Display(Name = "Confirm Password")]
    [Compare("password")]
    public string confirmPassword { get; set; }
}

密码和confirmPassword之间的比较验证总是这样说:

‘确认密码’和‘密码’不匹配。

即使我知道他们是匹配的

这里有一个奇怪的部分:当我从视图页面中删除第一个字段时,一切都正常。

所以当它只是

代码语言:javascript
复制
<% using (Html.BeginForm())
   { %>
   <%: Html.LabelFor(model => model.user.password) %>
   <%: Html.PasswordFor(model => model.user.password) %>
   <%: Html.ValidationMessageFor(model => model.user.password) %>
   <br />
   <%: Html.LabelFor(model => model.user.confirmPassword) %>
   <%: Html.PasswordFor(model => model.user.confirmPassword) %>
   <%: Html.ValidationMessageFor(model => model.user.confirmPassword) %>
   <br />
   <input type="submit" value="Submit" />
<% } %>

一切都很完美。

有什么想法吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-09 18:00:04

这是客户端验证脚本中的一个bug : jquery.validate.unobtrusive.js

在284号线,你会发现:

代码语言:javascript
复制
element = $(options.form).find(":input[name=" + fullOtherName + "]")[0];

将其更改为:

代码语言:javascript
复制
element = $(options.form).find(":input[name='" + fullOtherName + "']")[0];

name属性需要单引号。

票数 5
EN

Stack Overflow用户

发布于 2011-07-15 22:42:54

是因为你在用

代码语言:javascript
复制
<%:

而不是

代码语言:javascript
复制
<%=

我不确定帮手的输出是否需要进一步转义。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6713872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档