asp.net-mvc – Web API可空的必需属性需要DataMember属性
|
我在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 – 重用MVC arhitecture;有两层UI:ASP.NET MV
- asp.net-mvc – ASP.NET MVC模型/ ViewModel验证
- asp.net-mvc – ASP.NET MVC JsonResult返回500
- asp.net-identity – 使用asp.net身份在身份服务器4中实现角
- asp.net – MVC-Mini-Profiler – Web窗体 – 找不到/ mini
- asp.net – 在Response.RedirectToRoute之后跳过页面执行的
- 如何找到ASP.NET中的哪个对象无法序列化?
- 如何防止ASP.NET从缓存中删除项目
- asp.net – OWIN第二天拒绝身份验证cookie
- vbscript – 经典ASP 3.0从Recordset创建数组
- asp.net-mvc – 用于MVC文件上传的Bootstrap进度
- asp.net – 在MVC 4.0中使用部分视图中的节
- 如何使用ASP.NET标识使声明无效?
- asp.net – 使用ASPNet_Regiis加密自定义配置部分
- asp.net-mvc – 从部分视图添加html头标记的脚本
- 并行运行ASP.NET Webforms和ASP.NET MVC
- asp.net-mvc – WebApiConfig.cs和RouteConfig.c
- asp.net-mvc – 在ASP.NET MVC中动态更改主模板
- asp.net – 多个项目Visual Studio 2015 npm
- asp-classic – Response.Write和%=%
