这里发生了一些奇怪的事情。
我有一个基本的表格:
<% 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" />
<% } %>该头部具有以下特点:
<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是这样的:
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之间的比较验证总是这样说:
‘确认密码’和‘密码’不匹配。
即使我知道他们是匹配的
这里有一个奇怪的部分:当我从视图页面中删除第一个字段时,一切都正常。
所以当它只是
<% 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" />
<% } %>一切都很完美。
有什么想法吗?
谢谢。
发布于 2012-01-09 18:00:04
这是客户端验证脚本中的一个bug : jquery.validate.unobtrusive.js
在284号线,你会发现:
element = $(options.form).find(":input[name=" + fullOtherName + "]")[0];将其更改为:
element = $(options.form).find(":input[name='" + fullOtherName + "']")[0];name属性需要单引号。
发布于 2011-07-15 22:42:54
是因为你在用
<%:而不是
<%=我不确定帮手的输出是否需要进一步转义。
https://stackoverflow.com/questions/6713872
复制相似问题