[英]How Get Each List item Validation Error in C# MVC
我有一個Put方法,首先接收一個對象類,現在它接收它們的列表。 我使用de ModelState.IsValid方法並得到所有錯誤,但我不知道女巫元素有錯誤; 所以我把它們作為一個列表,嘗試驗證每個列表。
public IActionResult Put([FromBody]List<LIB_ColaboradorRegistroModeloCondicionLaboral> Colaboradores)
{
LIB_ControlResultado oCRB = new LIB_ControlResultado();
var adColaboradores = new List<AD_ColaboradorRegistro>();
AD_ColaboradorRegistro adColaborador = new AD_ColaboradorRegistro();
// HERE VALIDATES ALL MODEL BUT I DONT KNOW WITCH ELEMENT HAS THE PROBLEM
//if (!ModelState.IsValid)
//{
//IEnumerable<ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors);
//string detalle = "{";
//foreach (ModelError item in allErrors)
//{
// string newdetalle = item.ErrorMessage.ToString();
// detalle += " Error de Campos: " + ReemplazarRespuestas(newdetalle) + ",";
//}
//oCRB.Descripcion = detalle + " }";
//}
if (oCRB.Resultado)
{
try
{
foreach (var Colaborador in Colaboradores)
{
adColaborador = Colaborador.Cast<AD_ColaboradorRegistro>();
bool valid = TryValidateModel(adColaborador);
if (valid)
{
//OK
}
else
{
//HERE I NEED TO GET THE VALIDATION ERRORS
LIB_ControlResultado oa = new LIB_ControlResultado() { Rut = adColaborador.RUT , NumeroContrato = null};
}
}
}
catch (Exception ex)
{
//
}
}
return oCRB.Resultado ? Ok(ListaResultados) : (IActionResult)BadRequest(ListaResultados);
}
ModelState
屬性是實現IEnumerable<T>
接口的ModelStateDictionary
類。 這意味着您可以使用LINQ來獲取無效的條目。
var invalidItems = ModelState.Where(ms => ms.Value.Errors.Any());
foreach (ModelState item in invalidItems)
{
// Here you have access to item.Key which is name of the property
// And value which is current model state for property
}
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.