2012-11-29 3 views
8

Ajax.ActionLink (..., ...)를 사용하여 UpdatetargetID 대신 전체 페이지를 새로 고칠 수 있습니까?Ajax.ActionLink로 전체 페이지 업데이트

고전적인 Html.ActionLink가 POST 방법이 아니기 때문에 Ajax.ActionLink를 사용하는 것이 좋습니다. 나는 F5를 눌러했다,

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?" }, null) 

그러나 페이지가 새로 고쳐지지 않습니다 :

나는보십시오.

감사합니다.

+0

궁금한 점, GET 방법에는 어떤 문제가 있습니까? – Dmitry

+2

응용 프로그램의 상태 변경 (레코드 삭제, 상태 변경 ...)과 같은 작업을 수행하는 데 GET 메서드를 사용하는 것은 좋지 않습니다. 여기에 상태를 변경하기위한 actionLink가 필요합니다. 그 이유는 GET을 수행하는 고전적인 html.actionlink를 사용하고 싶지 않기 때문입니다. – Bronzato

답변

14

실제로 gardarvalur에서 제안한 두 가지 방법을 결합하여 div의 전체 페이지를 래핑 할 필요가없는 MVC와 유사한 코드를 얻을 수 있습니다. AjaxOptions의 onsuccess는 속성에 window.location.reload() 호출을 이동은 다음과 같이 객체 :

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", OnSuccess="window.location.reload()" }) 

없음 jQuery를 관여하지 MVC 아약스 ActionLink에서 그냥 평범한 구식 자바 스크립트.

+0

사용 window.location.href = window.location.href; 재 게시 경고를 피하기 위해 – stuartd

2

Javery 내에서 doin ajax 호출은 어떻게됩니까? 이 같은.

<button onclick="SomeFunction()" type="button" >Click me</button> 

그리고이 같은 JQuery와 뭔가 :

function SomeFunction() 
{ 
    var url = '/MyController/MyAction/'; 

    $.ajax({ 
     type: "POST", 
     url: url, 
     data: { value: '1234' }, //if there are any parameters 
     dataType: "html", //or some other type 
     success: function (data) { 
      window.location.reload(true); 
      // or something in that area, maybe with the 'data' 
     }, 
     error: function() { 
     //some derp 
     } 
    }); 

내가 미안 당신의 질문을 오해하지 희망 (그리고 나는이 정확히 ajax.actionlink를 사용하지 않는 실현). ;) 감사합니다!

는 ########## 편집을 할 #########

아니면 멀리 가져온 아이디어에 전체 페이지를 래핑 updatetargetid에 대한 링크를 말하고. 뭔가 같은 : 다음

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?", UpdateTargetId = "TheDivToUpdate" }, null) 

그리고이 div 태그로 페이지의 내용을 포장 :

<div id="TheDivToUpdate"> 
    //The content of your page 
</div> 

내가 아는, 아니 가장 아름다운 솔루션하지만 어쩌면 그것은 작동 너를 위해서?

+0

제안 해 주셔서 감사합니다.하지만 이번에는 jQuery를 사용하고 싶지 않습니다. 나는 솔루션과 같은 'MVC'를 선호한다. – Bronzato

+0

aaa ok, 그럴 경우 대신에 내 대답을 편집했습니다. :) – gardarvalur

+0

reload를 사용하면 "웹 브라우저를 다시 표시하려면 이전에 찾은 정보를 다시 보내야합니다." – usefulBee