2011-02-02 12 views
0

나는 조금 잃었 어. jQuery를 잘 이해하지 못했을 수도 있습니다. 나는 webgrid와 MVC3 애플 리케이션을 가지고있어. webgrid의 열은 '편집'을위한 것으로, 컨트롤러를 호출하고 JSON 객체를 반환해야합니다. 이것은 모두 MVC2에서 작동했지만 MVC3에서는 더 이상 작동하지 않습니다. jquery를 통해 눈에 거슬리지 자바 스크립트와 Ajax.ActionLink

grid.Column(header: "", format: (item) => Ajax.ActionLink("Edit" "Edit", new { id = item.id }, new AjaxOptions { OnSuccess = "handleEdit" })), 

이전에 나는 같은 자바 스크립트를 정의 할 수 있었다 : 내가 링크를 클릭하면

 function handleEdit(context) { 
    var json = context.get_data(); 
    var data = Sys.Serialization.JavaScriptSerializer.deserialize(json); 
    var form_url = '/taskstatus/update/' + data.id; 

    // update elements on the page 
    $('#add_link').hide(); 
    $('form').attr('ACTION', form_url); 
    $('#TaskStatus_status_code').val(data.status_code); 
    $('#TaskStatus_status_description').val(data.status_description); 
    $('#TaskStatus_active').attr('checked', data.active); 
    $('#submit').val('update'); 
    $('#form').show('fast'); 
    } 

은 지금은 다운로드 한 파일로 JSON을 얻을. 새롭고 눈에 거슬리는 방식으로 어떻게 이것을 할 수 있습니까?

답변

1

도우미는 ASP.NET MVC 3에서 기본적으로 jquery를 사용합니다. 즉, 성공 콜백에서 더 이상 첫 번째 인수로 컨텍스트를 가져 오지 않지만 서버에서 반환 한 값을 가져옵니다. 더 이상 get_data() 함수가 없습니다. 문자열 값이며 서버 응답을 나타냅니다. 일반 링크를 사용하여 더 나은

function handleEdit(result) { 
    var data = $.parseJSON(result); 
    ... 
} 

또는 : 그래서 다음과 같이 시도

$(function() { 
    $('#gridId a').click(function() { 
     $.get(this.href, function(data) { 

      // WARNING: you probably don't want to hardode urls like this 
      var form_url = '/taskstatus/update/' + data.id; 

      // update elements on the page 
      $('#add_link').hide(); 
      $('form').attr('ACTION', form_url); 
      $('#TaskStatus_status_code').val(data.status_code); 
      $('#TaskStatus_status_description').val(data.status_description); 
      $('#TaskStatus_active').attr('checked', data.active); 
      $('#submit').val('update'); 
      $('#form').show('fast'); 
     }); 
     return false; 
    }); 
}); 
+0

덕분에 당신이 많은 도움 : 쉽게 AJAXify는 별도의 파일에 것

grid.Column( header: "", format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.id }) ) 

. 양식 URL을 설정하려면 어떤 방법으로 추천 하시겠습니까? 전달 중입니까? – jdiaz

+0

@jdiaz, 한 가지 가능성은 JSON 응답의 일부로 서버가 직접이 URL을 반환하도록하는 것일 수 있습니다 :'var form_url = data.url;'. –

관련 문제