Ответ 1
Вы можете использовать javascript для перенаправления на новую страницу. Задайте значение window.location.href
для нового URL-адреса в событии ajax success
/complete
.
var saveUrl = '@Url.Action("SaveItems","Store")';
var newUrl= '@Url.Action("Stores","Store")';
$.ajax({
type: 'POST',
url: saveUrl,
// Some params omitted
success: function(res) {
window.location.href = newUrl;
},
error: function() {
alert('The worst error happened!');
}
});
Или в событии done
$.ajax({
url: someVariableWhichStoresTheValidUrl
}).done(function (r) {
window.location.href = '@Url.Action("Stores","Store")';
});
В приведенном выше коде используется вспомогательный метод Url.Action
для построения правильного относительного URL-адреса для метода действия. Если ваш javascript-код находится внутри внешнего файла javascript, вы должны создать url для корня приложения и передать его вашему script/code внутри внешних js файлов и использовать его для создания URL-адреса для методов действий, как описано в этот пост.
Передача параметров <
Если вы хотите передать некоторые параметры запроса на новый URL-адрес, вы можете использовать эту перегрузку метода Url.Action
, который принимает значения маршрута а также для создания URL-адреса с помощью запроса.
var newUrl = '@Url.Action("Stores","Store", new { productId=2, categoryId=5 })';
где 2 и 5 можно заменить некоторыми другими реальными значениями.
Так как это html-помощник, он будет работать только в вашем режиме бритвы, а не во внешних js файлах. Если ваш код находится внутри внешнего js файла, вам нужно вручную создать параметры запроса при запросе url.
Создание нового URL-адреса на стороне сервера
Всегда полезно использовать методы помощника mvc для генерации правильных URL-адресов методу действия. Из вашего метода действий вы можете вернуть json strucutre, у которого есть свойство для перенаправления нового URL.
Для этого вы можете использовать класс UrlHelper
внутри контроллера.
[HttpPost]
public ActionResult Step8(CreateUser model)
{
//to do : Save
var urlBuilder = new UrlHelper(Request.RequestContext);
var url = urlBuilder.Action("Stores", "Store");
return Json(new { status = "success", redirectUrl = url });
}
Теперь в обратном вызове ajax success
/done
просто проверьте возвращаемое значение и перенаправьте по мере необходимости.
.done(function(result){
if(result.status==="success")
{
window.location.href=result.redirectUrl;
}
else
{
// show the error message to user
}
});