Model view controller 比较验证器有错误吗
这是非常基本的,但在比较验证时总是返回false。还有其他人遇到这个问题吗Model view controller 比较验证器有错误吗,model-view-controller,asp.net-mvc-3,c#-4.0,Model View Controller,Asp.net Mvc 3,C# 4.0,这是非常基本的,但在比较验证时总是返回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
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 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 users注册器userviewmodel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.RegUsername)
@EditorFor(x=>x.RegUsername)
@Html.ValidationMessageFor(x=>x.RegUsername)
@LabelFor(x=>x.Password)
@EditorFor(x=>x.Password)
@Html.ValidationMessageFor(x=>x.Password)
@LabelFor(x=>x.RegConfirmPassword)
@EditorFor(x=>x.RegConfirmPassword)
@Html.ValidationMessageFor(x=>x.RegConfirmPassword)
}
现在的问题是:您的代码与我的代码有何不同?MVC3比较属性在独立于帐户控制器比较密码时存在缺陷。它似乎被硬编码为只与账户控制员一起工作。
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.将RegisterModel中的电子邮件、密码、确认密码剪切并传递到名为ViewModels/ShortRegister.cs的新文件中
2.将razor代码(电子邮件、密码、确认密码)从register视图中剪切出来,并将其转换为部分视图,称之为“\u shortRegistration”。
3.创建一个名为“ShortRegistration”的新控制器。将部分视图添加到短注册中。
5.添加相关的jquery脚本
这个错误被修复了吗?我禁用了Compare属性,并编写了jquery和CCS来修复这个问题!我非常乐意通过电子邮件发送代码来证明Compare是有缺陷的。从哪里可以获得最新版本的MS支持的Jquery libs?@CrazyCoderz,来自VS2010=>我只是使用默认模板创建了一个新的ASP.NET MVC 3项目(我已经安装了工具更新)。修复一些引用将起到惊人的作用。。天啊,我想要回我的3个小时:)在我安装了工具更新之后,我可能还没有更新这个项目的脚本目录。将创建一个骨架项目并获取脚本在从骨架项目复制脚本后,我仍然遇到相同的问题。我复制了带有固定引号的脚本,它可以正常工作。我正在使用局部视图进行注册,但不确定这会有什么不同。不!更新工具更新后的脚本仍然收支平衡。更新工具发布了一个修复程序,如果您需要code.yep,请告诉我-有相同的问题
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];