我有一个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
}
我拥有具有数据注释标记的新模型后,如何触发模型验证呢?
答案 0 :(得分:0)
我找到了答案。
在Web API操作方法中,我可以使用ApiController.Validate<T>()
来验证我的新模型。
https://msdn.microsoft.com/en-us/library/dn573258%28v=vs.118%29.aspx
之后,我调用ModelState.IsValid
来确定模型是否有效。
base.Validate(subModel);
if (!ModelState.IsValid)
{
// ...
}