SelectList不显示所选项目

时间:2011-12-21 15:55:12

标签: asp.net-mvc-3

这有点减少,但基本上我有一个看起来像这样的模型:

public class PersonCreateEditViewModel
{
   public string Title { get; set; }

   public IEnumerable<SelectListItem> Titles { get; set; }
}

在我的编辑页面上,我想在DropDownList中显示此人的当前标题,以便我们更改其标题。该代码如下所示:

@Html.DropDownListFor(model => model.Title, new SelectList(Model.Titles, "Value", "Text", Model.Title))

我通过检索一串字符串来填充它的行为:

IEnumerable<SelectList> titles = somelistoftitles.Select(
      c => new SelectListItem
      {
         Value = c,
         Text = c
      };


var viewModel = new PersonCreateEditViewModel()
{
    Title = model.Title,
    Titles = sometitles
};

return View(viewModel);

这将使用值填充DropDownList,但不会选择此人的当前标题。所以,我在这里做错了。查看底层的html,我发现没有为与该人的标题对应的选项设置selected属性。我指定Model.Title,因为第三个参数会选择它。

想法?


更新

我将Selected属性的设置添加为下面建议的qntmfred,并且将列表中的正确设置为true,但<option>没有selected它的属性。


解决

所以,这很微妙。我恰好有一个名为“Title”的ViewBag条目 - 类似这样:

@{
    ViewBag.Title = "Edit Person"
}

这显然导致选择不起作用,因为我的模型也有“标题”属性。我通过重命名属性解决了这个问题。

2 个答案:

答案 0 :(得分:4)

<强>解决

正如我在问题的最后写的那样,这不是一件明显的事情。我恰好有一个名为“Title”的ViewBag条目 - 类似这样:

@{
    ViewBag.Title = "Edit Person"
}

这显然导致选择不起作用,因为我的模型也有“标题”属性。我通过重命名属性解决了这个问题。

今天早上浪费了太多时间来解决这个问题。

经验教训。

答案 1 :(得分:1)

您需要在Selected

上设置SelectListItem属性
IEnumerable<SelectList> titles = somelistoftitles.Select(
      c => new SelectListItem
      {
         Value = c,
         Text = c,
         Selected = (c.Equals(model.Title))
      };