2009-05-26 20 views
2

我有這樣的動作:,你如何記得一個下拉列表的狀態?

public ActionResult Add([Bind(Include = "Title,Description")] product product2Add){ 
--SNIP-- 
} 

我使用,我已經創建了一個特殊的AddProduct_ViewModel類,它包含我的產品類和其他任何我需要在我看來視圖模型模式。其中包括2個下拉列表;一個對所有各種產品類別進行數據庫查詢,另一個列出產品供應商。

當我對我的產品失敗進行驗證時,我看不到如何輕鬆保存我的dropdownlist狀態(不需要執行冗長的db代碼)。有沒有更好的辦法?

+1

做局部請求。這樣你甚至不需要記住它的狀態,因爲它不會改變。 :) – 2009-05-26 06:35:05

回答

-2

嗯..在MVC中沒有視圖狀態,所以控件無法保存狀態,儘管您可以使用一些技巧將它存儲在使用javascript的cookie中 - 最好是jquery,或者將這些信息保存到onChange事件。

1

控制器,你可以撥打:

Request.Form.Get("MyDropDownListId"); 

獲取所選選項的值屬性。

在回發後再次生成下拉列表時,可以使用此值重新設置所選項目。

設定例在視圖中選擇項目的當你在你的模型屬性「每頁」:

Response.Write(Html.DropDownList("pageSize", 
      Model.PageSizes.ToSelectList(p => p.ToString(), p => p.ToString(), p => p.Equals(Model.PageSize)))); 

隨着擴展方法ToSelectList():

public static List<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, string> text, Func<T, string> value, Func<T, bool> selected) 
{ 
    var items = enumerable.Select(f => new SelectListItem() { Text = text(f), Value = value(f) }).ToList(); 
    return items; 
} 
+0

總之 - 控制器動作應該通過參數接受ddl數據並將其傳回。對? – 2009-05-26 06:58:27

相關問題