繁体   English   中英

Web API操作内的模型验证

[英]Model Validation Inside Web API Action

我有一个ASP.NET Web API方法,其模型需要后期绑定。 对象的“类型”确定模型上属性的类类型。 但是“类型”决定因素不在模型本身中,而是在我的数据库中。

public class MainModel
{
    public int Id { get; set; }
    public Object SubProperty { get; set; }
}

public class SubModelBase
{

}

public class SubModel1 : SubModelBase
{
    [Required]
    public string Name { get; set; }
}

public class SubModel2 : SubModelBase
{
    [Required]
    public string City { get; set; }
}

在以上模型中, SubProperty最终将变为SubModel1SubModel2等。

在执行操作时,我正在执行以下操作:

[HttpPost]
public void Go(MainModel model)
{
    var obj = _db.GetObject(model.Id);
    SubModelBase subModel = null;
    if (obj.ObjectType == "sub-model-1")
    {
        var jObject = JObject.FromObject(model.SubProperty);
        subModel = jObject.ToObject<SubModel1>();
    }
    else if (obj.ObjectType == "sub-model-2")
    {
        var jObject = JObject.FromObject(model.SubProperty);
        subModel = jObject.ToObject<SubModel2>();
    }

    // TODO: Validate the sub object
}

创建具有数据注释标记的新模型后,如何在其上触发模型验证?

我找到了答案。

在Web API操作方法内部,我可以使用ApiController.Validate<T>()验证我的新模型。

https://msdn.microsoft.com/zh-CN/library/dn573258%28v=vs.118%29.aspx

之后,我调用ModelState.IsValid来确定模型是否有效。

base.Validate(subModel);
if (!ModelState.IsValid)
{
    // ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM