如何在 View 中显示ModelState
?我具有以下验证代码,但无法在View中显示Modelstate错误。
我的条件是我的行动:
if (!ModelState.IsValid)
return BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(error => error.ErrorMessage));
else if (ModelState.IsValid)
{
if (updatedProduct.ProductSRDate.Value > DateTime.Now)
ModelState.AddModelError("ProductSRDate", " Date must be current date or in the past.");
var PrjEditMode = await ProductService.GetProductsbyId(id);
var editMode = Mapper.Map<ProductDetails>(PrjEditMode);
return View(editMode);
}
在 View 中,我的验证摘要为:
@Html.ValidationSummary(false, "", new { @class = "text-danger" })
但是它仅在有可为空的字段时显示
Date must be current date or in the past.
,它显示`日期必须是当前日期或过去日期。0 "The value '' is invalid."
。 最佳答案
您可以使用以下键在 View 中访问ModelState类:
Controller :ModelState.AddModelError("ProductSRDate", "Date must be current date or in the past.");
查看:@Html.ValidationMessage("ProductSRDate")
但是,这是代码逻辑错误,因为如果是ModelState
,则会向IsValid
添加错误。
if (!ModelState.IsValid || updatedProduct.ProductSRDate.Value > DateTime.Now)
{
if (updatedProduct.ProductSRDate.Value > DateTime.Now)
{
ModelState.AddModelError("ProductSRDate", " Date must be current date or in the past.");
}
//return BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(error => error.ErrorMessage));
return View(editMode); // You should return a view and handle Invalid ModelState in view.
}
else
{
var PrjEditMode = await ProductService.GetProductsbyId(id);
var editMode = Mapper.Map<ProductDetails>(PrjEditMode);
return View(editMode);
}