asp.net-mvc – Web API可空的必需属性需要DataMember属性
发布时间:2020-12-15 18:35:35 所属栏目:asp.Net 来源:网络整理
导读:我在Web API Post操作中收到以下VM public class ViewModel{ public string Name { get; set; } [Required] public int? Street { get; set; }} 当我发帖时,我会收到以下错误: Property ‘Street’ on type ‘ViewModel’ is invalid. Value-typed propert
我在Web API Post操作中收到以下VM
public class ViewModel { public string Name { get; set; } [Required] public int? Street { get; set; } } 当我发帖时,我会收到以下错误:
似乎错误是清楚的,所以我只是想要完全确定需要使用[DataContract]和[DataMember]属性,当你有一个需要可空属性的类。 有没有办法避免在Web API中使用这些属性? 解决方法
我正在面对同样的问题,我认为这是完整的废话。使用值类型,我可以看到[必需]不起作用,因为值类型的属性不能为空,但是当您具有可空值类型时,不应该有任何问题。然而,Web API模型验证逻辑似乎以相同的方式处理非可空和可空值类型,因此您必须解决它。我在
Web API forum中找到了一个解决方案,可以确认它的工作原理:创建一个ValidationAttribute子类,并将其替换为对可空值类型属性的RequiredAttribute:
using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; public class NullableRequiredAttribute : ValidationAttribute,IClientValidatable { public bool AllowEmptyStrings { get; set; } public NullableRequiredAttribute() : base("The {0} field is required.") { AllowEmptyStrings = false; } public override bool IsValid(object value) { if (value == null) return false; if (value is string && !this.AllowEmptyStrings) { return !string.IsNullOrWhiteSpace(value as string); } return true; } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata,ControllerContext context) { var modelClientValidationRule = new ModelClientValidationRequiredRule(FormatErrorMessage(metadata.DisplayName)); yield return modelClientValidationRule; } } NullableRequiredAttribute正在使用中: public class Model { [NullableRequired] public int? Id { get; set; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-4 – MVC4 RC脚本捆绑很慢
- 展望asp.net core Blazor项目c#编译为原生WebAssembly
- 使用ASP.NET WebApi中的HttpClient异步读取分块内容
- asp.net-mvc-4 – 使用WebAPI进行搜索
- asp.net-mvc-4 – Telerik MVC索引超出范围
- asp.net-mvc – Structuremap处理DataContext对象
- .net中如何获取机器硬件信息(防软件复制版)
- 一步步开发自己的博客 .NET版(1、基本显示)
- asp.net – 此版本的SQL Server不支持用户实例登录标志 连接
- asp.net – Visual Studio无法在IIS中创建网站
推荐文章
站长推荐
- asp.net – 在VS 2010中发布到Azure时出错 – 对
- ASP.NET MVC对不存在的用户进行身份验证和授权
- asp.net-core – 在定位.NET Core时引用旧的(完整
- asp.net-mvc-4 – .net 4.5 ASP.Net web API JSO
- asp.net-mvc – 模型绑定到MVC 3中可能存在非顺序
- asp.net-web-api – 如何在MVC4 Web API中的自定
- asp.net-mvc – 自定义DateTime模型绑定在Asp.ne
- asp.net中的TDD新手,我是否在正确的轨道上编写测
- asp.net – 如何使RequiredFieldValidator更改父
- asp.net-mvc-3 – ASP.NET MVC 3中ViewBag.Title
热点阅读