2013-08-02 4 views
0

하이의 조치로 리디렉션 나는 아약스 양식방법 아약스 게시

@Ajax.BeginForm("UpdateItems", "Basket", new AjaxOptions() { HttpMethod = "Post", OnSuccess = "LoadAjaxSuccess()" }, new { @id = "AjaxForm" }) 
{ 

<input type="submit" class="update-basket-button" value="Update" /> 

<input type="submit" class="basket-checkout-button" value="CheckOut" /> 
} 
내가 나를 위해 작동 DB를 업데이트해야 업데이트를 클릭 이제

하지만 난 체크 아웃을 클릭 할 때 변경 사항을 저장해야에게 있습니다 다른 작업으로 리디렉션합니다. 나는 Ajax 포스트에서 RedirecToAction()을 무시했다는 것을 알고있다. 이것을 달성하는 가장 좋은 방법은 무엇입니까. 미리 감사드립니다.

컨트롤러 동작 방법은 다음과 같습니다.

[HttpPost] 
    public ActionResult UpdateItems(IList<DocumentAndBasketItemDisplayListDto>basketItems, string button) 
    { 

     context.UpdateBuyHoldAndQuantityOfBasketItems(basketItems); 

     if (string.Equals("CheckOut", button)) 
     { 
      //Response.Redirect("/Order/Index"); 
      return RedirectToAction("Index", "Order");     
     } 

     return new EmptyResult(); 

    } 

답변

1

당신은 당신의 ActionResultJsonResult로 변경하고 반환 할 수 있습니다

[HttpPost] 
public JsonResult UpdateItems(IListbasketItems, string button) 
{ 
    context.UpdateBuyHoldAndQuantityOfBasketItems(basketItems); 
    if (string.Equals("CheckOut", button)) 
    { 
     //Response.Redirect("/Order/Index"); 
     return Json(Url.Action("Index", "Order")); 
    } 
    return Json(""); 
} 

이 방법을 귀하의 아약스 방법은 데이터를 검색하고 다음과 같이 사용할 수 있습니다

function LoadAjaxSuccess(data) { 
    document.location.href = data; 
} 
+0

안녕 sergioadh 감사 회신을 위해, 그러나 지금 나는 얻는다 "자원은 발견 될 수 없다." 오류 AjaxOption에서 "데이터"를 설정해야합니까? 제발 조언. –

+0

작업 이름을 찾을 수 없으므로 작업 이름이 올바른지 확인하십시오. 양식뿐만 아니라 컨트롤러에서도 동일해야합니다. – sergioadh

+0

나는 OnSucces가 "()"없이 있어야한다고 생각한다. – sergioadh