Один обработчик на ajax запрос, и запрос с формы
Не получается одновременно (в одном и том же Action) обработать Ajax и Form - запросы.
Ajax работает если стоит [FromBody]. Form работает если ничего не стоит или [FromForm].
Как сделать чтобы и то и то работало?
[HttpPost]
public ActionResult Create([FromBody,FromForm] GroupDTO group)
{
var isAjax = HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
try
{
if (ModelState.IsValid)
{
var result = _groupService.Create(group);
if (result.Successed)
{
return isAjax ? Json(result) : (ActionResult)RedirectToAction(nameof(Index));
}
else
{
return isAjax ? Json(result) : (ActionResult)View();
}
}
else
{
return isAjax ? Json(new OperationResult(false,"model state not valid")) : (ActionResult)View();
}
}
catch (Exception e)
{
return isAjax ? Json(OperationResult.Exception(e)) : (ActionResult)View();
}
}
Ответы (1 шт):
Автор решения: Виталий Шебаниц
→ Ссылка
Пока не нашел ничего лучше:
[HttpPost("Groups/CreateAjax")]
public ActionResult CreateFromBody([FromBody] GroupDTO group) => this.Create(group);
[HttpPost("Groups/Create")]
public ActionResult CreateFromForm([FromForm] GroupDTO group) => this.Create(group);
// POST: Group/Create
private ActionResult Create(GroupDTO group)
{
var isAjax = HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
try
{
if (ModelState.IsValid)
{
var result = _groupService.Create(group);
if (result.Successed)
{
return isAjax ? Json(result) : (ActionResult)RedirectToAction(nameof(Index));
}
else
{
return isAjax ? Json(result) : (ActionResult)View();
}
}
else
{
return isAjax ? Json(new OperationResult(false,"model state not valid")) : (ActionResult)View();
}
}
catch (Exception e)
{
return isAjax ? Json(OperationResult.Exception(e)) : (ActionResult)View();
}
}