asp.net – 使用WebAPI时重新验证模型(TryValidateModel等效)
发布时间:2020-12-15 18:57:17 所属栏目:asp.Net 来源:网络整理
导读:使用vanilla MVC,我可以使用TryValidateModel重新验证我的模型. TryValidateModel方法似乎不适用于WebAPI.如何在使用WebAPI时重新验证我的模型? 解决方法 我知道已经有一段时间了,但是这个问题仍然有效.因此,我认为我应该分享我对这个问题的解决方案. 我决
使用vanilla MVC,我可以使用TryValidateModel重新验证我的模型. TryValidateModel方法似乎不适用于WebAPI.如何在使用WebAPI时重新验证我的模型?
解决方法
我知道已经有一段时间了,但是这个问题仍然有效.因此,我认为我应该分享我对这个问题的解决方案.
我决定自己实现TryValidateModel(对象模型),基于System.Web.Mvc.Controller.cs中的实现 问题是mvc的TryValidateModel内部使用了自己的HttpContext和ModelState.如果你去和两者相媲美,它们非常相似…… 能够使用我们自己的HttpContext存在一个可以用于它的HttpContextWrapper. using System.Web.ModelBinding; protected internal bool TryValidateModel(object model) { return TryValidateModel(model,null /* prefix */); } protected internal bool TryValidateModel(object model,string prefix) { if (model == null) { throw new ArgumentNullException("model"); } ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => model,model.GetType()); var t = new ModelBindingExecutionContext(new HttpContextWrapper(HttpContext.Current),new System.Web.ModelBinding.ModelStateDictionary()); foreach (ModelValidationResult validationResult in ModelValidator.GetModelValidator(metadata,t).Validate(null)) { ModelState.AddModelError(validationResult.MemberName,validationResult.Message); } return ModelState.IsValid; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 应用程序不记录
- asp.net – CKEditor在更新面板中无法正常工作
- asp.net – 不能得到内容的内容,因为内容不是文字
- asp.net-mvc – 如何将XML作为POST传递给ASP MVC .NET中的A
- asp.net-mvc – LINQ Distinct()
- asp.net – 无法加载文件或程序集“Microsoft.Web.Extensio
- ASP.NET从URL获取物理文件路径
- asp.net – TransferRequestHandler和BeginRequest的性能问
- asp.net-mvc – BeginRenderLink Sitecore Glass Mapper
- 在asp.net后面的代码中创建javaScript变量
推荐文章
站长推荐
- asp.net – 人们如何调用aspx文件以区别于aspx.c
- asp.net – 动态创建的LinkBut??tons的OnClick事
- asp.net-mvc – 使用IIS 7重写模块重写Ampersand
- asp.net – 将Windows身份验证与表单身份验证混合
- asp.net-mvc – 如何在不给每个控制器放置注释的
- ASP.Net的Web TWAIN扫描解决方案?
- asp.net-mvc-4 – 如何在MVC4中呈现远程ReportVi
- asp.net – IIS7和IE8 – 在相同版本的IE8上呈现
- ASP.NET 4 URL限制:为什么URL不能包含任何内容?
- asp.net-core – 使用asp.net核心发布视图
热点阅读