2009-10-28 40 views
2

我想過濾頁面執行ajax請求異步更新結果列表。ASP.NET MVC Ajax:如何將參數值傳遞給來自select的Ajax動作?

有兩個帶選項值的組合框和一個Ajax.ActionLink。 列表呈現爲div內的局部視圖。

我知道如何實現控制器部分以及交互邏輯。我所缺少的是如何在Ajax.ActionLink調用中傳遞參數。

當用戶點擊鏈接時,我想更新呈現爲「SubList」部分視圖的列表。

<%= Html.DropDownList("branches", Model.Branches) %> 
    <%= Html.DropDownList("regions", Model.Regions) %> 
    <%= Ajax.ActionLink("Filter", "SubList", 
     new {branchID = ??, regionID = ??}, 
     new AjaxOptions() { UpdateTargetId = "theList"}) %> 
    <div id="theList"> 
     <% Html.RenderPartial("SubList", Model.List); %> 
    </div> 

,對於局部視圖中提取數據的控制器的操作:

public ActionResult SubList(int branchId, int regionId) 
{ 
    if (this.Request.IsAjaxRequest()) 
    { 
     List<Company> filtered = this.repository.QueryCompanies().Where(c => c.BranchID == branchId && c.RegionID == regionId).ToList(); 
     return PartialView("SubList", filtered); 
    } 
    return null; 
} 

如何傳遞的branchID和regionID參數(選定的值在頁面上的兩個dropdownlists)提供給控制器動作的子表?

回答

3

這應該用javascript或使用form而不是anchor來完成。沒有什麼東西可以放在你的??的地方使它工作。您不能在服務器端設置這些值,因爲它們可能在客戶端更改。所以基本上你需要連接兩個選擇的onchange事件,並用新值更新你的鏈接url,或者使用form。在電線之間

東西:

<% using (Ajax.BeginForm("SubList", new AjaxOptions() { 
    UpdateTargetId = "theList" 
})) { %> 
    <%= Html.DropDownList("branchId", Model.Branches) %> 
    <%= Html.DropDownList("regionId", Model.Regions) %> 
    <input type="submit" value="Filter" /> 
<% } %> 

<div id="theList"> 
    <% Html.RenderPartial("SubList", Model.List); %> 
</div> 
+0

謝謝達林,Ajax.BeginForm是我一直在尋找的概念。 – Marek 2009-10-28 20:31:04

相關問題