【发布时间】:2016-11-17 07:45:53
【问题描述】:
我创建了一个 WebAPI Web 应用程序,并通过实现 IValidatableObject 来验证数据。根据验证结果,调用外部 API 并保存模型是否有效的数据。 我已经创建了调用外部 API 的逻辑。
我的模型结构如下:
public class Class1
{
public string Class1Prop { get; set; }
public ICollection<Class1Data> Data { get; set; }
}
public class Class1Data : IValidatableObject
{
public int Id { get; set; }
public string Prop1{ get; set; }
public string Prop2 { get; set; }
..
public string Prop10 { get; set; }
// Validate Model
private bool validated = false;
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!validated)
{
if ((Prop1 != value1) || (Prop2 != value2) || .. )
{
// CALL EXTERNAL API
}
validated = true;
}
yield return ValidationResult.Success;
}
}
用于 POST 的 WebAPI 控制器:
[ResponseType(typeof(Class1))]
public async Task<IHttpActionResult> PostClass1(Class1 class1)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Class1.Add(class1);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = Class1.Id }, class1);
}
当从 Class2 中的 Validate 方法调用外部 API 时,我想包含 Class1Prop 的值。 我试图找到一种方法来做到这一点,并且还搜索了一种方法,但可以找到一个。 我想尽可能地保留模型的结构。 我希望我的问题有任何意义,如果没有记录在案,我很抱歉。
【问题讨论】:
标签: c# asp.net-mvc validation asp.net-mvc-4 asp.net-web-api