2011-08-18 4 views
1

저는 이것이 jQuery/MVC3에 대한 것이므로 아직 알지 못했습니다.@ Url.Action은 후속 호출에서 다른 결과를 반환합니다.

@ Url.Action 루틴이 여러 차례 액션 루틴을 호출 할 때 다른 문자열을 반환합니다.

다음 횟수는 호출 횟수와 관계없이 작동합니다.

function DeletePhone(delId) 
{ 
    var va = $("#idPhoneNumberView *").serializeArray(); 
    $.ajax({ 
     url: '@Url.Action("DeletePhone", "Player")/' + delId, 
     data: JSON.stringify(va), 
     type: 'POST', 
     contentType: 'application/json', 
     dataType: 'html', 
     success: function (resp) 
     { 
      var ev = document.getElementById("idPhoneNumberView"); 
      ev.innerHTML = resp; 
     }, 
     error: function (x) 
     { 
      alert(x.status); 
     } 
    }); 
}; 

이 루틴은 처음으로 작동합니다.

function DeletePhone(delId) 
{ 
    var va = $("#idPhoneNumberView *").serializeArray(); 
    $.ajax({ 
     url: '@Url.Action("DeletePhone", "Player")/' + delId, 
     data: JSON.stringify(va), 
     type: 'POST', 
     contentType: 'application/json', 
     dataType: 'html', 
     success: function (resp) 
     { 
      $("#idPhoneNumberView").html(resp); 
     }, 
     error: function (x) 
     { 
      alert(x.status); 
     } 
    }); 
}; 

URL입니다 "/ MVC/플레이어/DeletePhone/0"첫 번째 호출에 하고있다 "/ MVC/플레이어/DeletePhone/0/0"후속 호출에, 내가 얻을 이후 404 오류 함수에서 표시되는 첫 번째 호출 후 URL을 이해할 수 있습니다.

jQuery $ ("# idPhoneNumberView"). html (resp)을 사용하면 처리가 달라 지므로 다른 사람이 나에게 속도를 높여 주면 감사하겠습니다.

나는 이것을 분명히하고 싶다. 성공 코드에서 getElementById를 직접 사용하는 것과는 대조적으로 작동하는 코드와 그렇지 않은 것은 jQuery를 사용하는 것입니다.

jQuery html 메서드를 사용하면 @ Url.action 메서드가 후속 호출에서 다른 경로를 만드는 방식을 이해하지 못합니다. Scott

+0

응답에 무엇이 포함되어 있습니까? – ShankarSangoli

+0

delId는 어디에서오고 있습니까? DeletePhone에 들어가기 전에 변경 될 수 있습니까? – Henry

답변

3

Url.Action 부분적으로 요청을 생성하는 데 사용 된 현재 URL을 기반으로합니다. 요청이 / 인 경우 결과 페이지는 모두 동일한 URL이므로 결과 URL이 모두 표시됩니다. controller 또는 action으로 변경하는 경우 지정한 값으로 만 URL을 생성합니다.

예를 들어, /home/action/1의보기가 Url.Action("action", "home") 인 경우 결과 경로는 동일한 페이지이므로 새 URL을 생성하는 대신 전달 된 URL 만 사용합니다. (지금은 그것을 볼 것을 나에게 이상한 행동은)

불행하게도, 내가 알고있는 유일한 솔루션은 다음

@Url.Action("DeletePhone", "Player", new { id = UrlParameter.Optional }) 

(당신이 {id}이 매개 변수 이름

입니다 기본 경로를 사용하는 가정하는 것입니다
관련 문제