2012-09-20 3 views
3

여러 링크가 포함 된 페이지가 있습니다. 이러한 링크는 아약스 게시물과 콜백을 수행해야합니다. 그러나 링크는 포스트 대신 가져 오기를 수행합니다. 이것은 요청 된 URL에서 get을 처리 할 작업 메서드가 없기 때문에 404 오류가 발생합니다.MVC3 면도기 Ajax.ActionLink는 POST 메서드를 사용하지 않습니다.

내 Action 메서드에서 HTTPPost 특성을 제거하면 링크가 작동하지만 콜백이 실패하고 반환 된 Json이 새 페이지에서 렌더링됩니다.

다음은 내보기에서 사용하는 코드입니다.

<td id="[email protected]">@Ajax.ActionLink("Add", "AddToOrder", new { itemID = item.ItemID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "actionCompleted" }, new { id = "add-" + item.ItemID })</td> 

이이 HTML을 추가 끝 :

<td id="action-012679"><a data-ajax="true" data-ajax-method="POST" data-ajax-success="actionCompleted" href="/mysite/neworder/AddToOrder?itemID=012679" id="add-012679">Add to Order</a></td> 

내 컨트롤러는 다음과 같은 작업 방법이있다. 성공에 호출

[HttpPost] 
public JsonResult AddToOrder(string itemID) { 
    return Json(new { id = itemID, Action = "Added", "Just getting this working"}); 
} 

내 콜백 방법은 다음과 같습니다

<script language="javascript" type="text/javascript">   
    function actionCompleted(response, status, data) { 
     alert("We have returned"); 
    } 

</script> 

나는 내 행동 방식의 [HTTPPost] 속성을 변경하면 [HTTPGet] 내가 JSON 오류가 발생합니다. 반환 값에 JsonRequestBehavior.AllowGet을 추가하여이 문제를 해결할 수 있지만이 메서드는 페이지에 정의 된 콜백 함수를 사용하지 않고 실패합니다.

도움을 주시면 감사하겠습니다.

+0

을 : 당신은 당신의 페이지에 이러한 스크립트에 대한 참조를 추가해야합니다. UpdateTargetId를 지정하지 않았 으면 설정하십시오. – STO

답변

6

아마 jquery.unobtrusive-ajax.js 스크립트가 페이지에 첨부되어 있지 않아 링크가 정상적인 앵커로 정상적으로 저하되었습니다.

+0

예, 아마도 그럴 것입니다. 기본적으로 포함되지 않습니다. – Rickard

+0

woohoo! 환상적인 감사합니다! – Jonesopolis

1

제대로 작동하려면

MicrosoftAjax.js이 신비처럼 보이는 MicrosoftMvcAjax.js

+0

이것은 필요하지 않았습니다. –