2012-02-20 8 views
0

컨트롤러에서 내 동작 메서드를 호출하는 jqGrid를 가져올 수 없습니다. 나는 이것에 완전히 새롭다, 그래서 나는 아마 초보자 실수를 많이하고있다. jqGrids 설명서에서 samplecode를 가져 와서 조금 수정했습니다. 뷰에서jqGrid 및 MVC3 url 동작 메서드가 호출되지 않습니다.

코드 : 컨트롤러에서

$(function() { 
    $("#list").jqGrid({ 
     url: '@Url.Action("GetContactRows", "Contact")', 
     datatype: 'json', 
     mtype: 'GET', 
     colNames: ['Name', 'Address', 'City'], 
     colModel: [ 
      { name: 'Name', index: 'Name', width: 80 }, 
      { name: 'Address', index: 'Address', width: 80 }, 
      { name: 'City', index: 'City', width: 80 } 
     ], 
     pager: '#pager', 
     rowNum: 10, 
     rowList: [10, 20, 30], 
     sortname: 'invid', 
     sortorder: 'desc', 
     viewrecords: true, 
     gridview: true, 
     caption: 'List of Contacts' 
    }); 
}); 

코드 :

public JsonResult GetContactRows(string sidx, string sord, int page, int rows, bool search, string filters) 
    { 
     System.Diagnostics.Debug.WriteLine("asdf"); 

     return new JsonResult(); 
    } 

내 컨트롤러 액션 메소드에 중단 점을 설정했지만, 난 그냥 치고 얻을 수 없다 .

답변

3

search이 아닌 _search이라는 매개 변수를 사용해야합니다. 또한 JSON 데이터를 전달하지 않는 것 같습니다. 다음 예는 다음과 같습니다 또한

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult GetContactRows(string sidx, string sord, int page, int rows, bool _search, string filters) 
    { 
     var data = new 
     { 
      page = 1, 
      total = 1, 
      records = 3, 
      rows = new[] 
      { 
       new 
       { 
        id = 1, 
        cell = new[] { "Name 1", "Address 1", "City 1" }, 
       }, 
       new 
       { 
        id = 2, 
        cell = new[] { "Name 2", "Address 2", "City 2" }, 
       }, 
       new 
       { 
        id = 3, 
        cell = new[] { "Name 3", "Address 3", "City 3" }, 
       } 
      } 
     }; 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 
} 

공지 사항 매개 변수 이름으로 _search를 사용하여 작업의 서명과 우리가 JSON을 반환 할 때 JsonRequestBehavior.AllowGet을 사용하여 GET 요청을 허용 것을 알 수 있습니다.

하고 뷰 :

<rant>

<script src="@Url.Content("~/Scripts/jqgrid/js/jquery.jqGrid.min.js")" type="text/javascript"></script> 

<script type="text/javascript"> 
    $(function() { 
     $("#list").jqGrid({ 
      url: '@Url.Action("GetContactRows", "Home")', 
      datatype: 'json', 
      mtype: 'GET', 
      colNames: ['Name', 'Address', 'City'], 
      colModel: [ 
       { name: 'Name', index: 'Name', width: 80 }, 
       { name: 'Address', index: 'Address', width: 80 }, 
       { name: 'City', index: 'City', width: 80 } 
      ], 
      pager: '#pager', 
      rowNum: 10, 
      rowList: [10, 20, 30], 
      sortname: 'invid', 
      sortorder: 'desc', 
      viewrecords: true, 
      gridview: true, 
      caption: 'List of Contacts' 
     }); 
    }); 
</script> 

<table id="list"></table> 

은 또한 할 수 있도록 쉽게 문제의 그 종류는 방화 광 같은 자바 스크립트 디버깅 도구를 사용하십시오 디버깅합니다. 브라우저에서 모든 AJAX 요청과 서버가 응답으로 보내는 내용을 볼 수 있습니다. 이 작업을 완료했다면이 오류를 즉시 보았을 것입니다.

jqGrid 웹 사이트로 이동하여 다운로드하고 새 ASP.NET MVC 3 응용 프로그램을 만들고 코드를 복사하여 붙여 넣고 이전에 다운로드 한 jqGrid를 참조하고 F5 키를 눌러 실행합니다. FireFox에서 FireFox의 F12 키를 눌러 Firebug를 열고 jqGrid가 수행하려고 시도한 AJAX 요청이 빨간색으로 표시되는지 확인하고 (서버가 HTTP 500 상태 코드를 반환했기 때문에)이 AJAX 요청 옆에있는 + 기호를 클릭하여 정확한

enter image description here

01 : 예외 메시지는, 비 널 (NULL) 부울입니다 search 매개 변수의 값을 찾아 Params 탭을 클릭하고 클라이언트에서 보낸 정확한 매개 변수를 볼 수 있음을 말해 서버에서 전송

올바른 도구를 사용할 때 웹 개발을 쉽게 수행하는 방법을 알고 있습니까? 70 초. StackOverflow에서 질문하는 것보다 빠릅니다.

</rant>

+0

답장을 보내 주셔서 감사합니다. 나는 또한이 오류에 걸쳐왔다 : http://stackoverflow.com/questions/5970600/jqgrid-error-b-jgrid-jqid-is-not-a-function. 귀하의 에 동의합니다. 제 문제는 IE가 아닌 다른 브라우저를 설치할 수 없다는 것입니다. 그러나 F12 모드도 비슷한 방식으로 도움이되었습니다. – kaze

+1

@kaze, IE 이외의 다른 브라우저를 설치할 수 있습니까? 그리고 그들은 당신에게 웹 개발을 기대합니까? 종교 재판을 위해 일하십니까? 뭔가 잘못해서 처벌 받았습니까? –

+0

그게 그 방법입니다. FF와 다른 "필수"도구를 설치할 수 있도록 규칙을 변경하려고합니다. – kaze