Показать ошибки модели состояния в представлении? - PullRequest
1 голос
/ 11 апреля 2020

Как я могу отобразить ModelState в моем представлении? У меня есть следующий код для проверки, но я не могу отобразить ошибку 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);
        }

В поле зрения У меня есть Сводка проверки как:

@Html.ValidationSummary(false, "", new { @class = "text-danger" })

Но отображается только Date must be current date or in the past., когда есть Обнуляемое поле: `Дата должна быть текущей или прошедшей.

0 "The value '' is invalid.".

enter image description here

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете получить доступ к классу ModelState с помощью ключа:

Контроллер: 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);
}
...