validation – Controller.ValidateModel方法.它是如何工作的?
发布时间:2020-12-16 09:55:07 所属栏目:asp.Net 来源:网络整理
导读:我有以下模型类: public abstract class CompanyFormViewModelBase{ public CompanyFormViewModelBase() { Role = new CompanyRoleListViewModel(); ContactPerson = new PersonListViewModel(); Sector = new SectorListViewModel(); } [Required] [Displa
我有以下模型类:
public abstract class CompanyFormViewModelBase { public CompanyFormViewModelBase() { Role = new CompanyRoleListViewModel(); ContactPerson = new PersonListViewModel(); Sector = new SectorListViewModel(); } [Required] [Display(Name = "Company Name")] public string CompanyName { get; set; } public CompanyRoleListViewModel Role { get; set; } [Display(Name = "Contact Name")] public PersonListViewModel ContactPerson { get; set; } public SectorListViewModel Sector { get; set; } } public class AddCompanyViewModel : CompanyFormViewModelBase,IValidatableObject { public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { PlugandabandonEntities db = new PlugandabandonEntities(); CompanyName = CompanyName.Trim(); var results = new List<ValidationResult>(); if (db.Company.Where(p => p.CompanyName.ToLower() == CompanyName.ToLower()).Count() > 0) results.Add(new ValidationResult("Company already exists.",new string[] { "CompanyName" })); return results; } } 它使用“经典”使用如下: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(Plugandabandon.ViewModels.AddCompanyViewModel model) { if (ModelState.IsValid) { CreateCompany(model); return RedirectToAction("Index"); } else { return View(model); } } 但是我想把这个模型类用于另一个,ajax形式. public JsonResult ReturnJsonAddingCompany(string companyName,int roleID,int sectorID,int personID) { Plugandabandon.ViewModels.AddCompanyViewModel model = new ViewModels.AddCompanyViewModel() { CompanyName = companyName,ContactPerson = new ViewModels.PersonListViewModel() { SelectedItem = personID },Role = new ViewModels.CompanyRoleListViewModel() { SelectedItem = roleID },Sector = new ViewModels.SectorListViewModel() { SelectedItem = sectorID } }; ValidateModel(model); if (ModelState.IsValid) { CreateCompany(model); } else { throw new Exception("Company with such name already exists"); } var list = Utils.CompanyList(); return Json(list,JsonRequestBehavior.AllowGet); } 看着 ValidateModel(model); 线.如果模型是正确的 – 它工作正常.如果不正确 – 它会抛出异常并中断方法的继续执行(并返回异常以查看).另外,如果我设置断点 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 方法,它永远不会在无效的模型案例中调用! (调用有效模型Validate方法).我想拥有像“经典”方法这样的行为,只需验证模型然后验证ModelState.IsValid. 解决方法
如果模型无效,ValidateModel()将引发异常.相反,使用TryValidateModel()
从documentation
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 分页/排序不适用于部分视图中使用的网格
- 基于角色的启用/禁用asp.net中的控件
- asp.net – 如何使用ajax调用跨域web api?
- 从ASP.Net页面运行批处理文件
- asp.net-mvc – 如何gzip内容在asp.net MVC?
- asp.net – .net网络应用程序中的异常处理
- asp.net-mvc-3 – 无法在MVC3 HTML Helper中获取自定义属性
- asp.net-mvc – 如何使用LinqToSQL实现ASP.NET MVC 2中数据
- asp.net – 我们如何在共享工作环境中使用版本控制?
- asp.net – 如何在Ember.js应用程序中使用ASP .NET Web API
推荐文章
站长推荐
- asp.net – 终止所有会话,然后是应用程序结束事件
- asp.net-mvc – 如何在我的MVC应用程序有机会处理
- 垃圾收集 – ASP.NET核心Web应用程序(.NET Frame
- asp.net-mvc-3 – 如何在asp.net MVC剃刀中生成d
- asp.net-mvc – 将Viewmodel数据保存到ASP.NET M
- iis-7 – 如何在IIS经典模式池下托管ASP.NET 5(v
- asp.net-mvc – 在ajax请求中返回PDF
- asp.net – VB.NET 2.0:代码中的URL来自哪里?
- ASP.NET MVC与Web客户端软件工厂(WCSF)
- 为什么asp.net OnTextChanged不工作
热点阅读