2010-10-13 36 views
1

我有一個下拉我的意見之一。此下拉菜單僅適用於條目。基本上我需要知道如何調用下拉值更改時的操作?ASP.net MVC呼叫行動DropDown價值變化

我的情況是:我正在製作一個簡單的收件箱頁面。該下拉菜單中包含以下過濾器選項:查看全部,查看邀請,查看回復等。

當用戶從下拉列表中選擇過濾器選項時,我想調用操作以返回帶有過濾數據的新視圖。

任何想法?我猜這是一個附加到下拉的OnChange的腳本,但我不知道語法是什麼,或者如何從腳本調用MVC動作。

在此先感謝

回答

6

您需要使用javascript做到這一點。這是一個例子。假設你有以下視圖模型:

public class MyViewModel 
{ 
    public IEnumerable<SelectListItem> Values { get; set; } 
} 

,你將填充在你的控制器:

[HandleError] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      Values = new[] 
      { 
       new Item { Value = "1", Text = "Item 1" }, 
       new Item { Value = "2", Text = "Item 2" }, 
       new Item { Value = "3", Text = "Item 3" } 
      } 
     }; 
     return View(model); 
    } 
} 

然後它是強類型的這一模式的觀點:

<%: Html.DropDownListFor(x => x.SelectedValue, 
    new SelectList(Model.Values, "Value", "Text"), 
    new { id = "items" } 
)%> 

的最後一部分是註冊更改事件(在本例中使用jquery):

$(function() { 
    // Register for the change event of the drop down 
    $('#items').change(function() { 
     // When the value changes, get send an AJAX request to the 
     // Filter action passing the selected value and update the 
     // contents of some result div with the partial html returned 
     // by the controller action 
     $('#result').load('<%: Url.Action("filter") %>', 
      { selectedValue: $(this).val() } 
     ); 
    }); 
}); 
+0

關於同一條路徑的另一個問題。我的郵箱列表是由DevExpress網格製作的。每行都有一個用戶可以檢查的複選框,以便他們可以一次刪除多個記錄。當用戶點擊選擇所有鏈接或清除所有鏈接時,我需要設置網格中的所有複選框以進行選中或取消選中。我如何通過客戶端腳本來解決這個問題?謝謝 – MattyD 2010-10-13 08:26:05

+0

耶穌,我喜歡網絡形式 – Seva 2015-03-31 18:39:40