2014-11-11 4 views
0

У меня есть мнение, чтобы обновить заказ с некоторыми полями и двумя кнопками (кнопки и кнопки Назад Добавить)Не удается перенаправить к действию на MVC

я использую JQuery Ajax для отправки параметров от View к контроллеру:

function onUpdate(e) { 
    var data = getParameters() 
    $.ajax({ 
     url: '@Url.Action("UpdateOrder", "Home")', 
     type: 'post', 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(data), 
     success: function() { 
     } 
    }); 
}; 

И мой контроллер:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult UpdateOrder(int orderId,int provinceId,int paymentType,int totalAmount,string isClosed) 
    { 
     Order order = new Order(); 
     order.OrderId = orderId; 
     order.ProvinceId = provinceId; 
     order.PaymentTypeId = paymentType; 
     order.TotalAmount = totalAmount; 
     order.IsClosed = isClosed=="True"?true:false; 
     order.UpdateOrder(order); 
     return RedirectToAction("Default");  
    } 

когда я нажмите на кнопку отправить, запись обновляется, но не перенаправлять по умолчанию действия.

+0

Ajax calls остается на той же странице. Вы можете просто использовать стандартную отправку, если хотите перенаправить. –

ответ

2

Вместо того, чтобы перенаправлять из HttpPost контроллер, попробуйте следующее: -

function onUpdate(e) { 
    var data = getParameters() 
    $.ajax({ 
     url: '@Url.Action("UpdateOrder", "Home")', 
     type: 'post', 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(data), 
     success: function() { 
     window.location.href="/yourcontroller/Default"; //<------redirect here 
     } 
    }); 
}; 

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult UpdateOrder(int orderId,int provinceId,int paymentType,int totalAmount,string isClosed) 
    { 
     Order order = new Order(); 
     order.OrderId = orderId; 
     order.ProvinceId = provinceId; 
     order.PaymentTypeId = paymentType; 
     order.TotalAmount = totalAmount; 
     order.IsClosed = isClosed=="True"?true:false; 
     order.UpdateOrder(order); 
     return Json(new{}, JsonRequestBehavior.AllowGet); // <------ change here  
    } 

Или просто вместо того, чтобы вызывать контроллер HttpPost из JQuery AJAX можно выполнить обычную почту с подчиненной формой, с обычной почтой вы можете перенаправить туда, куда вы хотеть.

+0

Большое спасибо, он работает хорошо. Но я должен ждать еще 7 минут, чтобы отметить ваш ответ. –

+0

@ NguyễnHuy ... нет проблем. Приятно помочь вам. –

+0

b/ci использовать Kendo UI, некоторые элементы управления привязкой ajax, поэтому, когда я использую обычный пост с формой submit , я не могу принимать значения из элементов управления –

Смежные вопросы