У меня есть приложение Net core MVC, и я проверяю модель в CreateAction, с быстрой проверкой.У меня есть класс ValidatorActionFilter, который проверяет все действия контроллера.
Это мой класс
public class ValidatorActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.ModelState.IsValid)
{
if (filterContext.HttpContext.Request.Method == "GET")
{
var result = new BadRequestResult();
filterContext.Result = result;
}
else
{
var controller = filterContext.Controller as Controller;
object model = controller.ViewData.Model;
string action = filterContext.ActionDescriptor.RouteValues["action"];
string controllerName = filterContext.ActionDescriptor.RouteValues["controller"];
filterContext.Result = controller.View(action, controllerName);
}
}
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
}
При запуске я настраиваю этот
services.AddMvc(opt =>
{
//opt.Filters.Add(typeof(DbContextTransactionFilter));
opt.Filters.Add(typeof(ValidatorActionFilter));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddFeatureFolders()
.AddFluentValidation(cfg => { cfg.RegisterValidatorsFromAssemblyContaining<Startup>(); });
}
Тогда у меня есть ProductsController вот таксодержать этот метод
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Create.Command command)
{
string stop = "1";
var resultado = await _mediator.Send(command);
if (!resultado.Exito)
{
ModelState.AddModelError(string.Empty, "Hubo un error al guardar el producto");
_logger.LogCritical("Error al guardar el Producto");
return View(command);
}
return RedirectToAction("AgregadoExitoso");
}
Я работаю с шаблоном CQRS, в данном случае Create.Command - это мой DTO, который содержит информацию, которую я хочу сохранить в базе данных
Проверкаработает нормально, я вхожу в OnActionExecuting и проверяю, что состояние модели недопустимо, мой вопрос в том, как вернуться к текущему представлению с соответствующей моделью.
Мое представление - это форма для создания продукта