2011-10-31 264 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傳遞給action。該fastes方式做到這一點 - 通過查詢字符串具有相同的名稱作爲傳遞PARAM在行動:

http://mysite/GetGroups?groupFilterId=2 

要刷新它,你需要用PARAM whitch將被解僱的下拉控制onchange發送Ajax請求。指定一些ID爲您的過濾器控制:

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

,然後使用jQuery讓你的數據的GET請求:

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

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

我認爲這將是最好使用Url.Action幫手,而不是harcoding在queryLink VAR – epzee

+0

是的網址,肯定的。這只是一個簡單的例子。我已經更新了示例。 – Samich

+1

我有同樣的事情,但我的控制器actionresult不刷新視圖。你知道爲什麼嗎? – alice7

1

你需要在火的下拉菜單中單擊事件使用jQuery AJAX調用。 首先在下拉菜單中點擊事件,如果值發生變化,然後調用jquery ajax調用 我正在粘貼jquery的代碼。

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

//這是爲ajax調用。下拉檢查自己動手。 「/ Wk/Revision/@ hTitle/@ pageID /?langID = 2」 這將調用控制器方法修訂版。 接下來我想你會做。

+0

如果你需要整個代碼然後告訴我,我會爲你提供 – user1006544

相關問題