【问题标题】:ViewData with DropDown使用下拉菜单查看数据
【发布时间】:2011-05-05 11:21:30
【问题描述】:

我正在使用 MVC3/Razor 并希望将 DropDownList 与以下数据绑定,

 @Html.DropDownList("SearchBy", new[] {     new SelectListItem { Text = "Order ID", Value = "OrdId" }, 
                                            new SelectListItem { Text = "Mobile Number", Value = "MobileNum" }, 
                                            new SelectListItem { Text = "Clerk Name", Value = "ClerkName" },
                                            new SelectListItem { Text = "Pin Number", Value = "PinNum" },
                                            new SelectListItem { Text = "RTS PayGo Ref ID", Value = "RefId" } })

以上代码将DropDownList 与相关数据绑定。目前默认选择“订单 ID”。

如果用户执行发布操作,我可以将选定的值发送到我的控制器。

我们如何将该值设置为 ViewData/ViewBag,以便DropDownList 的选择将在回发后持续存在?

【问题讨论】:

  • 你不能将选定的值存储在(视图)模型中而不是 ViewBag 中吗?除此以外;在 [HttpPost] 方法中,可以将选中的值添加到 ViewBag 并返回一个视图。
  • 我们如何将选定的项目值添加到视图数据中,下面的行不会为我运行....@Html.DropDownList("Years", new SelectList(ViewBag.Years as System.Collections. IEnumerable, ViewData["SELECTED_VALUE"] ?? "2010"))
  • 在你的 post 方法中;您可以获得所选值(如您所写)。在该方法中,您可以执行 ViewBag.SelectedItem = [SELECTEDITEM]

标签: asp.net asp.net-mvc-3 drop-down-menu


【解决方案1】:

在每个操作帖子上,您必须不断地将项目添加到 ViewBag 或 ViewData 并手动不断更新它,或者将其存储在会话中。每次重新加载视图时,都必须将所选值设置为匹配。

HTH。

【讨论】:

  • 根据我的经验,这是正确的,除非您想进入 JSON 序列化并让 jQuery 在加载时从隐藏变量中的序列化集合构建下拉选项;这很快就会变得复杂和烦人。
猜你喜欢
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多