2013-01-23 2 views
3

기본적으로 Im은 기본적으로 4 개의 드롭 다운을 만들려고하는데, 하나가 변경되면 다시 채워집니다. 일명 필터는 서로 계단식으로 연결되어 있습니다.한 번에 여러 번 트리거하는 ajax 호출

그래서 저는 이것을 Ajax 호출에 넣기로했습니다. 기본적으로 매개 변수를 사용하여 반환 할 선택 목록을 결정합니다. 그런 다음 이전 4 개의 드롭 다운을 새로운 드롭 다운으로 대체합니다. (현재 부분을 새로운 부분으로 바꿉니다)

예외를 제외하면, 컨트롤러를 한 번 호출하면됩니다. 그런 다음 두 번 .. 다음으로 4 번 .. 등등. 오래된 것들은 제거/교체되지 않는 것처럼 말입니다. 그냥 숨겨져 있니? ..

시각적으로 나는 이드가 기대하는 것을 본다. 드롭 다운은 선택 옵션을 변경합니다.

아래 코드는 (일부 변수 이름이 오타 경우 PS 죄송합니다, 그들은 여기에 게시 변경되었습니다)

컨트롤러 :

public class Filter 
    { 
     public IEnumerable<SelectListItem> List1; 
     public IEnumerable<SelectListItem> List2; 
     public IEnumerable<SelectListItem> List3; 
     public IEnumerable<SelectListItem> List4; 
    } 

    public ActionResult GlobalFilter(String l1, String l2, String l3, String l4) 
    { 
     Filter filter = new Filter(); 

     filter.List1 = ...selectList 

     filter.List2 = ...selectList 

     filter.List3 = ...selectList 

     filter.List4 = ...selectList 

     return PartialView(filter); 
    } 

보기 :

<div id="filterPartial"> 

     @Html.Action("GlobalFilter", "Header") 
    </div> 

부분보기 :

@model ns.Controllers.HeaderController.Filter 

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

@using (Ajax.BeginForm("GlobalFilter", "Header", new AjaxOptions { UpdateTargetId = "filterPartial" })) 
{ 

    @Html.DropDownList("l1", Model.List1, new { }) 
    @Html.DropDownList("l2", Model.List2, new { }) 

    @Html.DropDownList("l3", Model.List3, new { }) 
     @Html.DropDownList("l4", Model.List4, new { }) 

} 
<script type="text/javascript"> 
    $('#l1').change(function() { 
     $(this).parents('form').submit(); 
    }); 
</script> 

답변

5

부분 외부로 이동 :

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

나는 또한뿐만 아니라 일부 외부 변경 스크립트를 이동 등 같은 동적 콘텐츠 처리를 변경 : 외부 그 변경 스크립트를 이동 '에'사용하여

<script type="text/javascript"> 
    $('#filterPartial').on('change', '#l1', function() { 
     $(this).closest('form').submit(); 
    }); 
</script> 
+2

을 당신은 걱정할 필요가 없습니다 매번 다시 배선하고 여러 번 발사하는 것에 대해서. – Zach

+0

감사합니다. 이것은 훌륭한 대답입니다! :) – Mcloving

관련 문제