2011-10-31 3 views
4

사용자가 자신의 상태 코드를 기반으로 레코드를 필터링 할 수있는 기능이 있습니다. 메뉴에서, 나는 사용자 정의 필터 섹션이 있습니다ASP.NET MVC 3 DropDownList selectedindexchanged

<h3>Custom Filters</h3> 
<br /> 
    <ul id="ui-ajax-tabs"> 
     @{ Html.RenderAction("GetGroups", "Manage");} 
    </ul> 

을 그리고 내 부분보기는 다음과 같습니다 아이템이 드롭 다운리스트에서 선택되는

@model IEnumerable<AllEngage.Model.Group> 

@using AllEngage.Web.Helpers 

@foreach (var group in Model) 
{ 
    <li> 
     <label for="@group.GroupName">@group.GroupName</label> 
     @Html.DropDownList("GroupItems", group.GroupItems.ToSelectListItems()) 
    </li> 
} 

, 나는에서 발사 작업 방법을 원하는 내 컨트롤러 :

[HttpGet] 
public ActionResult Index(int page = 1, int groupFilterId = -1) 

가장 좋은 방법은 무엇입니까? json을 사용하여 실행하거나 어떻게 든 포스트 백을 수행합니까?

답변

8

param을 (를) 전달해야합니다. fastes 방법은이 작업을 수행하는 - 행동 PARAM과 같은 이름의 쿼리 문자열을 통해 전달합니다

http://mysite/GetGroups?groupFilterId=2 

는 드롭 다운 컨트롤의 onchange 발사됩니다 whitch PARAM와 아약스 요청을 보낼 필요를 새로 고치려면.

@Html.DropDownList("GroupItems", group.GroupItems.ToSelectListItems(), new {@id="ddlFilter"}) 

을 다음 JQuery와 데이터의 GET 요청을 사용하여 : 필터 제어를 위해 약간의 ID를 지정하면 드롭 다운의 클릭 이벤트에 jQuery를 사용하여 AJAX 호출을 발사 할 필요가

$('#ddlFilter').change(function() { 
    var queryLink = '@Url.Action("GetGroups")'; 
    if ($(this).val() != '') { 
     queryLink += '?groupFilterId=2'; 
    } 

    $.get(queryLink, function(data) { 
     $('#ui-ajax-tabs').html(data); 
    }); 
}); 
+0

나는 확인 queryLink var에 – epzee

+0

네의 URL을 harcoding 대신 Url.Action 도우미를 사용하는 것이 더 좋을 것 같아. 그것은 단지 간단한 예입니다. 샘플을 업데이트했습니다. – Samich

+1

나는 똑같은 일을하지만, 내 컨트롤러 actionresult는보기를 새로 고치지 않습니다. 왜 그런지 알아? – alice7

1

. 값이 변경되면 jquery ajax 호출을 호출하면 드롭 다운의 클릭 이벤트가 발생합니다 jquery 코드를 붙여 넣습니다.

$.get("/Wk/Revision/@hTitle/@pageID/?langID=2", function (data) { 
        $("div#dAjaxContent").html(data); 
        $("div#dShow").css("visibility", "visible"); 
        $("#dShow").dialog(); 
       }); 

// 아약스 호출 용입니다. 드롭 다운 확인은 직접하십시오. "/ Wk/Revision/@ hTitle/@ pageID /? langID = 2" 컨트롤러 메서드 리비전을 호출합니다. 다음으로 할 생각입니다.

+0

전체 코드가 필요한 경우 알려 주시면 알려 드리겠습니다. – user1006544

0

게시물 요청을 수행하는 것이 좋습니다. 같이, 당신은 AJAX 요청을받을 만들 수있는, 또는 당신이 떨어져 재 지정하려는 경우, 당신은 자바 스크립트의에서는 window.location을 변경할 수 있습니다

http://iridescence.no/post/Invoking-ASPNET-MVC-Actions-from-JavaScript-using-jQuery.aspx

원하는 행동을 가리 키도록 :이 사용을 구축 할 수 있습니다 :

window.location = "/MyController/Index";