Я не удовлетворен лучшим ответом Джозефа, вместо того, чтобы исправить правильную проблему, он сказал, что это неправильный вариант использования. На самом деле есть много мест, например, если вы конвертируете старую кодовую базу в код с расширением ajaxified, и там вам НУЖНО это, тогда вам НУЖНО. В программировании нет оправдания, потому что не только вы кодируете своих плохих и хороших разработчиков, и вам приходится работать бок о бок. Поэтому, если я не кодирую перенаправление в ajax, мой коллега-разработчик может заставить меня найти решение для него. Точно так же, как мне нравится использовать все сайты с паттернами AMD или mvc4, и моя компания может держать меня подальше от этого в течение года.
Итак, давайте поговорим сейчас о решении.
Я отлично справился с обработкой запросов и ответов ajax, и самый простой способ, который я обнаружил, - это отправить коды состояния клиенту и иметь одну стандартную функцию javascript для понимания этих кодов. Если я просто отправлю, например, код 13, это может означать перенаправление.
Итак, ответ json, такой как {statusCode: 13, messsage: '/ home / logged-in'}
конечно, есть множество вариантов, предложенных как
{status: 'success', код: 13, url: '/ home / logged-in', сообщение: 'Вы вошли в систему сейчас'}
и т. Д., Так что по вашему выбору стандартных сообщений
Обычно я наследую от базового класса Controller и ставлю свой выбор стандартных ответов следующим образом
public JsonResult JsonDataResult(object data, string optionalMessage = "")
{
return Json(new { data = data, status = "success", message = optionalMessage }, JsonRequestBehavior.AllowGet);
}
public JsonResult JsonSuccessResult(string message)
{
return Json(new { data = "", status = "success", message = message }, JsonRequestBehavior.AllowGet);
}
public JsonResult JsonErrorResult(string message)
{
return Json(new { data = "", status = "error", message = message }, JsonRequestBehavior.AllowGet);
}
public JsonResult JsonRawResult(object data)
{
return Json(data, JsonRequestBehavior.AllowGet);
}
Об использовании $ .ajax intead Ajax.BeginForm
Я хотел бы использовать Jquery Ajax и я, но опять же это не я во всем мире, чтобы принимать решения
У меня есть приложение, полное Ajax.BeginForm, и, конечно, я этого не делал. Но я должен жить с этим.
Таким образом, есть обратный вызов успеха в начальной форме, вам не нужно использовать jquery ajax для использования обратных вызовов
Что-то об этом здесь
Ajax.BeginForm, вызывает действие, возвращает JSON, как получить доступ к объекту JSON в моей функции JS OnSuccess?
Спасибо