2011-01-20 43 views
3

我正在構建自定義分頁機制,並且有一個用於更改頁面大小的下拉列表。頁面大小在我的viewmodel中表示。顯然,我可以更改該值並再次運行搜索以獲得適當的結果。如何獲取HTML DropDownListFor以回發?

但是有沒有辦法讓DropDownListFor回發選定的值更改?

+1

asp.net的MVC是爲了擺脫廢除`Page.IsPostBack`! 。看看簡單地在asp.net mvc – hunter 2011-01-20 15:44:11

回答

7

其實我寫了一個小的JavaScript來啓動此行爲:

$(document).ready(function() { 
    $('form').find('select.auto-post').change(function() { 
     $(this).parents('form').submit(); 
    }); 
}); 

有趣的巧合,實際上,我working on the same thing現在。但是,我建議您不要使用POST HTTP方法來處理任何類型的分頁參數。改用GET。這使得您的用戶可以更輕鬆地進行導航,並且使搜​​索引擎更輕鬆地索引您的內容的所有頁面。

UPDATE:

對於上述jQuery的工作,你會令你的下拉列表如下:

Html.DropDownListFor(expression, items, new { @class = "auto-post" }) 
+0

多年以後,我搜索了自己的問題,並且對我的新手傾向印象深刻。我最終選擇的解決方案是通過GET觸發一個呼叫來切換新數據。基本上你只是把所有的東西都扔在查詢字符串上。也許可以通過巧妙使用ViewModel來完成 – whoblitz 2012-05-09 02:41:12

10

您可以使用HtmlATtributes傳遞「onchange();」嘗試這個。

<%: Html.DropDownListFor(model => model.ProductName, listobj, 
           new { onchange = 'submit()'; }) %> 

希望這會有所幫助。

+4

+1中爲幫助器集成的解決方案做一個HttpPost。正是我在找的東西。在MVC中,語法在雙引號和無分號的情況下效果更好:`new {onchange =「submit()」}` – 2012-08-22 21:45:29