[英]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
最终将变为SubModel1
, SubModel2
等。
在执行操作时,我正在执行以下操作:
[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.