【发布时间】:2018-01-19 03:25:09
【问题描述】:
public abstract class Base : IBase
{
[Required]
public int key {get;set;}
}
public class Entity: Base
{
public string Name {get;set;}
}
public class child : Entity
{
[Required]
public string Park {get;set;}
}
动作过滤器
public class ValidateViewModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.ModelState.IsValid == false) {
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
现在,当值发布到 API 时,不要设置“Key”字段,因为它是 SAVE 的请求。问题是,上面的属性说,字段 "key" 的模型是无效的。它已经作为 Id 字段的 0 值存在(作为默认 int)。 我希望,它应该验证 true,因为 0 是默认值。
注意:我无法删除或更改上述 BASEENTITY 和 PARENT 实体。 我只能控制 CHILD 实体和这个属性类。
【问题讨论】:
-
首先,您要编辑数据,所以不要在视图中使用数据模型 - 使用视图模型。并且
int不可为空且是必需的(您还具有[Required]属性,因此如果在请求中发送null或无效值,则ModelState将无效(但该属性将被初始化为其默认值)
标签: validation asp.net-web-api asp.net-mvc-5 required modelstate