【问题标题】:MVC 3 Razor not displaying selected item from dropdown listMVC 3 Razor 不显示下拉列表中的选定项目
【发布时间】:2012-03-17 17:06:23
【问题描述】:

我创建了一个带有“区域”下拉列表的表单。提交表单后,我希望能够从表单中查看详细信息。特别是我希望显示“区域”的名称,但我目前正在获取名称、ID 和标签。

下拉列表Controller:

public ActionResult Add()
{
    var db = new AssociateDBEntities();

    var region = db.Regions.Select(r => new { r.RegionId, r.RegionName });
    ViewBag.Regions = new SelectList(region.OrderBy(r => r.RegionName).AsEnumerable(), "RegionId", "RegionName");

    return View();
}

“详细信息”控制器:

public ActionResult Details(int id)
{
    using (var db = new AssociateDBEntities())
    {
        ViewData["Region"] = new SelectList(db.Regions.ToList(),"RegionName");

        return View(db.Associates.Find(id));
    }
}

“详细信息”视图:

<div class="form-grid-1">
    <div class="display-label">@Html.LabelFor(model => model.Region)</div>
    <div class="display-field">@Html.DisplayFor(model => model.Region)</div>
</div>

我怎样才能让名称 (RegionName) 显示?

【问题讨论】:

  • 你真的应该考虑使用视图模型。

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


【解决方案1】:

随便用

@Html.LabelFor(model => model.Region.RegionName)

或者为 Region 创建一个 DisplayTemplate。退房 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

【讨论】:

  • 其实我就是这么做的!!我摆脱了控制器中ViewData["Region"] = new SelectList(db.Regions.ToList(),"RegionName"); 中的"RegionName" 部分并使用了@Html.LabelFor(model =&gt; model.Region.RegionName),它起作用了!
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多