数据注释 – MVC3中的ModelState.IsValid vs IValidateableObjec
发布时间:2020-12-15 23:33:59 所属栏目:asp.Net 来源:网络整理
导读:所以根据 Gu的IValidatableObject.Validate()应该被调用时控制器验证它的模型(即在ModelState.IsValid之前),但是简单地使模型实现IValidatableObject似乎不起作用,因为Validate(..)不被调用. 任何人都知道有没有其他的东西要连线,让这个工作? 编辑: 这是所
所以根据
Gu的IValidatableObject.Validate()应该被调用时控制器验证它的模型(即在ModelState.IsValid之前),但是简单地使模型实现IValidatableObject似乎不起作用,因为Validate(..)不被调用.
任何人都知道有没有其他的东西要连线,让这个工作? 编辑: 这是所要求的代码. public class LoginModel : IValidatableObject { [Required] [Description("Email Address")] public string Email { get; set; } [Required] [Description("Password")] [DataType(DataType.Password)] public string Password { get; set; } [DisplayName("Remember Me")] public bool RememberMe { get; set; } public int UserPk { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { var result = DataContext.Fetch( db => { var user = db.Users.FirstOrDefault(u => u.Email == Email); if (user == null) return new ValidationResult("That email address doesn't exist."); if (user.Password != User.CreateHash(Password,user.Salt)) return new ValidationResult("The password supplied is incorrect."); UserPk = user.UserPk; return null; }); return new List<ValidationResult>(){ result }; } } 那个行动. (我没有做任何特别的控制器…) [HttpPost] public ActionResult Login(LoginModel model) { if (ModelState.IsValid) { FormsAuthentication.SetAuthCookie(model.Email,model.RememberMe); return Redirect(Request.UrlReferrer.AbsolutePath); } if (ControllerContext.IsChildAction || Request.IsAjaxRequest()) return View("LoginForm",model); return View(model); } 我在LoginModel.Validate()的第一行设置了一个断点,似乎没有得到命中. 解决方法
没有什么比你只需要添加到你验证的模型.这是一个验证的例子
public class User : IValidatableObject { public Int32 UserID { get; set; } public string Name { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { //do your validation return new List<ValidationResult>(); } } 你的控制器会使用这个模型 public ActionResult Edit(User user) { if (ModelState.IsValid) { } } 希望这可以帮助.其他要求是.net 4和数据注释 – 你显然需要jsut for ivalidatable对象.发布任何问题,我们会看到我们是否无法解决问题,例如发布您的模型和控制器,您可能会缺少某些东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- [ASP.NET MVC] 利用自定义的AuthenticationFilter实现Basic
- “记住我”与ASP.NET MVC认证不工作
- asp.net-mvc-3 – 实体框架|代码优先|从CultureInfo.Name映
- asp.net-core-mvc – IN MVC6返回Json(行,JsonRequestBehav
- asp.net – 使用/ signalr / ping调用时使用长轮询
- asp.net-core – aspnetcore 2中的Razor Pages默认页面
- asp.net – 在WCF中将对象数组序列化为JSON以符合OpenSearc
- asp.net – 在IIS7上为WordPress重写URL
- forms-authentication – 在OWIN托管的SignalR实现中接受AS
- asp.net-mvc – 内联如果在Razor View中
推荐文章
站长推荐
- 如何在asp.net上的ButtonClick上使用Javascript隐
- asp.net – 使用ASP:文本框作为
- asp.net-mvc – 如何在某些HTML中使用内联Razor代
- .net core项目修改appsetting配置后未自动更新的
- asp.net-mvc – 如果在剃刀视图中使用ELSE帮助器
- 如何在ASP.NET成员资格中访问UserId而不使用Memb
- asp.net – Web.config允许特定用户的位置访问
- asp.net – RDLC报表中表的行颜色和替代行颜色
- asp.net – 使用“dnu publish”排除发布项目上的
- 身份验证 – 禁止ASP.NET Core中的API URL重定向
热点阅读