2012-04-23 7 views
0

을 컨트롤러 곳처럼 컨트롤러에 매개 변수를 전달 메신저 :전달 매개 변수는 내가 MVC3에서 모달 대화 상자가 아약스

$("#SelectedCSIDivisionCodes").live("click", function() { 
     var ID = $(this).val(); 

     $.ajax({ 
      type: "GET", 
      url: '@Url.Action("GetCSICodes", "CSICodes")', 
      data: { divisionID: ID }, 
      dataType: "json", 
      error: function (xhr, status, error) { 
       alert(xhr); 
       alert(status); 
       alert(error); 
       // you may need to handle me if the json is invalid 
       // this is the ajax object 
      }, 
      success: function (json) { 
       alert("Data Returned: " + json); 
      } 
     }); 

     //   $.getJSON(, { divisionID: ID }, function (data) { 
     //    alert(data); 
     //   }); 

    }); 

그리고이 같은 매개 변수를 수신하고 있습니다 :

[AcceptVerbs(HttpVerbs.Get)] 
    public JsonResult GetCSICodes(string divisionID) 
    { 
     int ID = Convert.ToInt32(divisionID); 
     var csiCodes = (from c in EFProject.CSICode 
         where c.DivisionID == ID 
         select c).OrderBy(x => x.CSICodeID); 

     List<SelectListItem> codes = new List<SelectListItem>(); 

     foreach (var code in csiCodes) 
     { 
      codes.Add(new SelectListItem { Value = code.CSICodeID.ToString(), Text = code.Code + " " + code.Name }); 

     } 

     return Json(codes.AsEnumerable(), JsonRequestBehavior.AllowGet); 
    } 

아약스 호출이 제대로 작동하지만 컨트롤러에서 매개 변수 값을 감지하지 못합니다. 즉, 컨트롤러에서 변수 divisionID에 null이 생깁니다. Firefox를 사용하여 값을 설정했는지 확인하고이 URL을 반환하기 때문에이 작업을 수행하고있는 것처럼 보입니다. GET http://localhost:1925/CSICodes/GetCSICodes?divisionID%5B%5D=2 [HTTP/1.1 200 OK 95690ms]

잘못된 생각이 들었습니까?

+0

URL은 divisionID = 2가 아니며 divisionID [] = 2가되어야합니다. ID가 자바 스크립트에서 디버그 할 때 평등 한 것은 무엇입니까? – DMulligan

+0

컨트롤은 ListBoxFor 도우미입니다. 내가 경고 ($ (this) .val()) 할 때 나는 2와 같은 숫자를 얻는다. 파이어 폭스에서 디버깅하는 방법을 모른다. –

+0

ID가 설정되고 (당신의 ajax 호출) 라인에 중단 점을 배치 한 다음 어떤 ID가 설정되었는지 조사 할 것입니다. 당신이 설명하는 URL은 ID가 2로 설정된 값 하나를 가진 배열이라고 생각한다면 어떻게 될 것입니다. – DMulligan

답변

0

귀하의 작업에는 string 유형의 매개 변수가 필요하지만 배열 유형의 매개 변수가 필요합니다.

URL은 divisionID = 2로 끝나야하며, 대신 divisionID [] = 2 (1의 값이 2 인 배열)로 끝나야합니다.

특정 상황에서는 val() 함수가 배열을 반환 할 수 있습니다. 자세한 내용은 http://api.jquery.com/val/을 참조하십시오.

관련 문제