2009-10-18 7 views
8

국가, 주 및 대도시에 대한 드롭 다운 목록이 3 개 있습니다. 나는 사용자 seclect 나라 다음 가 jQuery를 채우기 DropDownList로 할 때 원하는 선택 물리게 다음 메트로 DropDownList로 채우기 (아약스의 드롭 다운리스트를 계단식 같은) .These 공정 나는 JQuery와 함께하고 싶은 경우.Asp.Net에서 JQuery를 사용하여 드롭 다운 목록을 바인딩

답변

10

ASP.NET MVC에서 설명 하겠지만 ASP.NET 웹 서비스를 작성하거나 코드 페이지에 몇 가지 페이지 메서드를 추가하여 동일하게 구현하면 동일한 결과를 얻을 수 있습니다. 또한 제 3 자 솔루션이나 WCF의 JSON 시리얼 라이저가 필요합니다. MVC를 사용

, 처음의 세 가지 컨트롤러 액션을 보자 - 각각 주와 지하철을 얻기 위해 두 나라가 정적 인 것, 하나는 페이지를 표시하고, 다음보기에서

public ActionResult Index() 
{ 
    ViewData["Countries"] = _countryRepository.GetList(); 
    return View(); 
} 

public ActionResult States(string countryCode) 
{ 
    var states = _stateRepository.GetList(countryCode); 
    return Json(states); 
} 

public ActionResult Metros(string countryCode, string state) 
{ 
    var metros = _metroRepository.GetList(countryCode, state); 
    return Json(metros); 
} 

을 세 가지가 DropDownLists, 하나는이 같은 Ajax 호출에 jQuery를의 상태를 얻을 수 있습니다 [이 "나라"] 객체가,이 나라 이름이야 말하는을 ViewData에 바인딩 :

$('#Countries').change(function() { 
    var val = $(this).val(); 
    $states = $('#States'); 
    $.ajax({ 
     url: '<%= Url.Action('States') %>', 
     dataType: 'json', 
     data: { countryCode: val }, 
     success: function(states) { 
      $.each(states, function(i, state) { 
       $states.append('<option value="' + state.Abbr+ '">' + state.Name + '</option>'); 
      }); 
     }, 
     error: function() { 
      alert('Failed to retrieve states.'); 
     } 
    }); 
}); 

대도시는 유비 작성 될 수 드롭 다운 국가 및 주 선택을 모두 서버에 전달하고 d 메트로 영역 배열을 사용하여 JSON 객체를 가져 오는 것.

리포지토리 구현에 대한 세부 사항을 빠뜨린 채 서버의 결과 변수를 어떤 방식 으로든 상태/대도시 집합으로 채 웁니다. State 클래스에는 Abbr (예 : 'CA')과 Name (예 : 캘리포니아)이라는 두 가지 속성이 있다고 가정했습니다.

나는 그것이 당신을 어떤 식 으로든 돕기를 바라며, 또는 적어도 해결책으로 당신을 어떻게 든 지휘하길 바랍니다.

+1

대단히 감사합니다. 은 <옵션 값 앞에 <를 넣어야했습니다 .... – Michel

+0

아, 나는 그것을 알아 차리지 못했습니다! 고마워, 나는 나의 대답을 편집했다. –

+0

'json'을 파싱하고'List '과 같은 것을 반환하지 않으면'states.d'를 사용해야합니다. 그렇지 않으면 속성은 항상 정의되지 않았습니다. – atconway

관련 문제