我有这个动作:
public ActionResult Add([Bind(Include = "Title,Description")] product product2Add){
--SNIP--
}
我正在使用视图模型模式,我创建了一个特殊的AddProduct_ViewModel
类,其中包含我的产品类以及我在视图中需要的任何其他内容。这包括2个下拉列表;一个用于查找所有各种产品类别的数据库,另一个用于列出产品供应商。
当我对我的产品进行验证失败时,我看不到如何轻松保存下拉列表的状态(没有做一些冗长的数据库代码)。还有更好的方法吗?
答案 0 :(得分:1)
:
Request.Form.Get("MyDropDownListId");
获取所选选项的值属性。
在回发后再次构建下拉列表时,您可以使用此值重新设置所选项目。
在您的模型中拥有属性“PageSize”时,在视图中设置所选项目的示例:
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;
}
答案 1 :(得分:-2)
嗯..在MVC中没有viewstate,所以控件无法保存状态,虽然你可以使用一些技巧将它存储在cookie中使用javascript - 最好是jquery,或者在onChange事件中将这些信息保存到服务器端