2013-06-11 8 views
0

MVC 부분 뷰에 계단식 드롭 다운이 있습니다. DD1은 DD2의 값을 구동합니다. DD1을 선택하면 DB 테이블을 기반으로 DD2의 값에 따라 DD2를 채우게됩니다.MVC에서 계단식 드롭 다운 저장

내 생각에 DD2를 부분적으로 보았고 내 양식에 중첩시켜야했습니다. 그런 다음 아약스를 사용하여 부분 뷰에 새로 고치고 DD1 값을 전달할 수 있습니다. 내가 DD1 및 DD2 및 기타 물건의 bucnh 모두 (전체보기를 제출할 때

문제는, 어떻게 DD2에있는 값을받을 수 있나요입니까?

나는이 문제를 해결하기 위해 노력하고있어 MVC를 사용하기보다는 올바른 값으로 DD2을 수정하는 자바 스크립트를 사용하여 다음 옵션을 얻을 수있는 JSON 통화를 할 DD1의 변화에 ​​자바 스크립트 함수를 트리거합니다. 나는이 작업을 수행하는 방법을

?

답변

0

얼마나 큰을 각 드롭 다운에 대한 귀하의 가치는 무엇입니까?

나는 몇 년 전에 똑같은 일을 시도했다. DD1은 미국과 캐나다 였고 DD2는 관련 주 및 지방이었습니다. 데이터 세트가 상대적으로 작 으면 두 경우 모두 선택 목록 마크 업을 페이지에 넣은 다음 javascript (jQuery)로 교체하는 것이 좋습니다. 당신은 아약스 또는 전체 페이지 새로 고침 여부에 상관없이 왕복 요청을 스스로 해결할 수 있습니다.

데이터 세트가 크고 마크 업에 모든 값을 넣는 것이 좋지 않고, 아약스 호출로 DOM을 수정하는 대신 MVC보기를 사용하려면 전체 페이지를 새로 고치면됩니다. ajax를 사용하려면 jQuery로 DOM을 수정한다. 이를 수행하기 위해 부분 뷰가 필요하지 않습니다.

0

전체 페이지 다시 게시를하고 싶지 않으면 자바 스크립트를 사용해야합니다. 이런 유형의 경우 javascript/ajax가 필요합니다. 저는 개인적으로 MVC로 바꿨을 때이 모든 비즈니스 로직이 MVC 모델 외부에서 발생한다는 것을 받아 들여야하는 어려움을 겪었습니다. 그러나 결국 웹 사이트가 가장 잘 작동하게 만드는 것은 무엇이든 (사용자는 코드를 보지 못하고 얼마나 예쁜 지 알 수 있습니다.)

어쨌든, 자바 스크립트를 사용하지 않고 전체 페이지를 게시하지 않으면 부분은 해당 페이지/양식의 일부로 렌더링됩니다.

난 그냥 ...

... JQuery와 같은 ... 동일한 컨트롤러의 메소드에 JSON 호출을 트리거하는 첫 번째 드롭에 무언가를 onchange를 이벤트를 추가

$("#mydropdown").change(function() { 
    $.post("/Controller/DropdownChangedJSON", { firstdropdownvalue: $("#mydropdown").val() }, function(data) { 
    $("#seconddropdown").empty(); 
    // loop through "data" to populate dropdown 
}); //post 
}); //mydropdown_change() 

당신의 컨트롤러 :

public JsonResult DropdownChangedJSON(string firstdropdownvalue) { 
    //get results 
    List<datamodel> myarray = //something 
    return new JsonResult { Data = new { success = true, rows = myarray } }; 
} 

희망이 내가 m에 대한 부분도있는 경우

+0

그래서 당신의 말을하는 데 도움이 y 페이지를 "응용 프로그램"이라고합니다. 그리고 응용 프로그램 내부에 5 개의 부분보기가 있는데 전체 "응용 프로그램"부분보기를 즉시 제출할 수없고 모든 데이터를 저장할 수 없습니까? – kralco626

+0

글쎄, 네가 제대로한다면. 부모보기에서 "Application"부분을 html.BeginForm()으로 둘러 쌉니다. - 그 부분 중 하나에 중첩 된 다른 양식 태그가 없는지 확인하십시오. 게시물 ActionResult가 모델을 예상하는 경우 필드 이름은 대소 문자를 구분해야합니다. 필드가 javascript/ajax로 채워지고 조작 된 경우에도 해당 최상위 양식의 모든 필드가 ActionResult에서 사용할 수 있어야합니다. – Losbear

+0

따라서 중첩 된 부분 뷰는 응용 프로그램 부분 뷰와 동일한 모델을 가져야합니까? – kralco626