여러 링크가 포함 된 페이지가 있습니다. 이러한 링크는 아약스 게시물과 콜백을 수행해야합니다. 그러나 링크는 포스트 대신 가져 오기를 수행합니다. 이것은 요청 된 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을 추가하여이 문제를 해결할 수 있지만이 메서드는 페이지에 정의 된 콜백 함수를 사용하지 않고 실패합니다.
도움을 주시면 감사하겠습니다.
을 : 당신은 당신의 페이지에 이러한 스크립트에 대한 참조를 추가해야합니다. UpdateTargetId를 지정하지 않았 으면 설정하십시오. – STO