ASP.NET MVC3 TryValidateModel验证整个模型集合,而不仅仅是单个
发布时间:2020-12-16 07:27:23 所属栏目:asp.Net 来源:网络整理
导读:我有一个采取模型列表的动作.我想一次单独验证每个模型与整个模型集合.我正在尝试使用TryValidateModel,但似乎如果我的任何一个模型无效,则所有模型都无效.我的表单显示5个SurveyResponseModels(一个包含两个必需字符串和两个整数的类).如果我完全填写所有五
我有一个采取模型列表的动作.我想一次单独验证每个模型与整个模型集合.我正在尝试使用TryValidateModel,但似乎如果我的任何一个模型无效,则所有模型都无效.我的表单显示5个SurveyResponseModels(一个包含两个必需字符串和两个整数的类).如果我完全填写所有五个模型,我将获得validCount = 5.但是,如果五个模型中的任何一个不完整(因此验证失败),我得到的validCount为0. TryValidateModel的预期行为是什么?如果是这样,关于如何一次验证这些的任何想法?
[HttpPost] public ActionResult Create(IList<SurveyResponseModel> respondents) { int validCount = 0; foreach (SurveyResponseModel respondent in respondents) { if (TryValidateModel(respondent)) { validCount++; } } ModelState.AddModelError("",validCount.ToString() + " respondents passed validation"); } 解决方法
查看代码,在我看来,TryValidateModel将验证所提供对象给出的所有类型的模型,而不仅仅是该特定对象本身.此外,它返回ModelState.IsValid属性的当前值,以便一旦存在无效模型,TryValidateModel的所有调用都将返回false.如果你想做这样的事情,我认为你需要在特定的模型实例上自己获取并运行每个模型实例的验证器.
我还认为模型验证器已经在您手动调用它们时运行.您可以通过在循环之前查看ModelState.IsValid的值来检查此(对于无效模型).如果它是假的,则意味着验证器由模型绑定器运行,这就是我认为发生的情况. 您可以在http://aspnet.codeplex.com/找到MVC的源代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – .NET Core WebAPI OpenIdDict(凭据流)和Angular
- asp.net-mvc – 用于Firefox的Windows认证网站提示,但不适用
- asp.net-mvc – FileStreamResult和FilePathResult之间的区
- asp.net – 使用DataContext静态变量
- asp.net-mvc – 为什么visual studio 2012会在mvc项目中自动
- Asp.Net:如何允许访问内部网用户的页面,拒绝外网用户?
- asp.net – 如何将HTML页面转换为.ASPX页面并向其添加/删除
- .net – 如何在同一个域但不同的主机上共享本地存储令牌?
- ASP.NET-MVC 2 RC最佳功能
- asp.net – DELETE语句与REFERENCE冲突
推荐文章
站长推荐
- 什么是链接服务器的ASP.NET连接字符串格式?
- asp.net-mvc – Basic Umbraco 6.1.1 SurfaceCon
- asp.net – 获取数据绑定到ListView上DataBound事
- entity-framework-6 – Entity Framework种子方法
- asp.net-mvc – Sitecore 7和MVC 4集成
- 如何配置asp.net进程在域帐户下运行?
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,
- 开发自己的Data Access Application Block[上篇]
- asp.net-mvc – 使用NHibernate时如何处理成员资
- asp.net-mvc-3 – MVC将JSON ViewModel传递给Vie
热点阅读