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;}
}
ActionFilter即使默认值存在
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的话,不设置“重点”领域,因为它是保存请求ModelState.Isvalid无效场。问题是,以上属性表示,模型对字段“key”无效。它已经在那里作为Id字段的0值(作为默认的int)。 我想,它应该验证为真,因为0是默认值。
注意:我无法删除或在上面的BASEENTITY和PARENT实体中进行任何更改。 我只控制CHILD实体和这个属性类。
首先,您的编辑数据不要在您的视图中使用数据模型 - 使用视图模型。而且'int'不是可以为空并且是必需的(你也有'[Required]'属性,所以如果在请求中发送'null'或无效值,那么'ModelState'将是无效的(但是属性将被初始化为其默认) –