0
我的Web API暴露下面的方法充分利用對象驗證訪問完整的JSON
[HttpPost]
public IActionResult MyPostMethod([FromBody]Company company)
{
.......
}
公司類看起來像下面
public class Company
{
public Guid CompanyGuid { get; set; }
public string Name { get; set; }
public List<Employee> Employees { get; set; }
}
[EmployeeValidation]
public class Employee
{
public Guid EmployeeGuid { get; set; }
public string Name { get; set; }
}
正如你可以看到Employee類裝飾有驗證屬性如下實現。
public class EmployeeValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var logger = (ILogger<EmployeeValidationAttribute>)validationContext.GetService(typeof(ILogger<EmployeeValidationAttribute>));
List<Employee> Employees = (List<Employee>)validationContext.ObjectInstance;
foreach (Employee Employee in Employees)
{
if (Employee.EmployeeGuid == Guid.Empty)
{
return new ValidationResult("Invalid Employee Guid");
}
}
return ValidationResult.Success;
}
}
讓出問題的時候與Employee對象的確認說,我要記錄整個JSON輸入MyPostMethod方法。但是在驗證器中,我只能訪問員工對象。有反正我能得到驗證中獲得JSON輸入爲公司爲員工對象?
我想我的問題的重點是要知道如果它可能得到一個驗證程序,我可以訪問完整的JSON對象。我知道我可以爲根對象創建一個驗證器並驗證所有包含的對象(就像您爲公司驗證器所建議的那樣),但這正是我不想實現的目標。此外,當驗證程序屬性報告驗證錯誤時,請求似乎不會對Post方法產生影響。 –
@Jimcrown好吧,我明白了我沒有找到一個類級別的驗證屬性給你的容器對象,而是一個屬性級的驗證屬性會,不知道爲什麼......如果後期不綁定到您的行動的參數,那麼你將不得不查看asp.net mvc模型綁定功能的命名約定。 –