2009-05-26 21 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

相关问题