MVC4的SelectList没有选择默认对象(MVC4 SelectList not select

2019-09-23 04:53发布

我的选择列表没有选择默认对象被带到通过代码。

我第一次创建我SelectList像这样:

public SelectList CreateSelectList(object objSelected = null)
{
  return new SelectList(GetAll().OrderBy(s => s.NumericalValue), "PeriodID", "Name", objSelected);
}

我objSelected被充满了与该PeriodID关联的GUID。

在我的控制,我定义我的viewbag变量,新的选择列表。

public ActionResult Edit(Guid id)
{
  Classroom classroom = classroomRepository.GetByID(id);
  ViewBag.PeriodID = periodRepository.CreateSelectList(classroom.PeriodID);
  return View(classroom);
}

然后,在我看来这里就是我如何显示我SelectList

<div class="control-group">
  @Html.LabelFor(model => model.PeriodID, "Period", new { @class = "control-label" })
  <div class="controls">
      @Html.DropDownListFor(model => model.PeriodID, ViewBag.PeriodID as SelectList, String.Empty, new { @class = "span3" })
      @Html.ValidationMessageFor(model => model.PeriodID)
  </div>
</div>

Answer 1:

你这里有两个问题。 首先,这样的:

@Html.DropDownListFor(model => model.PeriodID, ViewBag.PeriodID as SelectList, 
      String.Empty, new { @class = "span3" })

更改ViewBag.PeriodID到ViewBag.Periods或ViewBag.PeriodList。 这是混乱的,并且有多种情况,其中,如果您使用相同的命名对象MVC会感到困惑。 这只是最好的,以确保一切的名称不同。

其次,选择列表的类忽略SelectListItem的selectedItem属性成员。 它不是在所有使用。 DropDownListFor将采取model.PeriodID的价值并使其选择的值。 然而,我在你的代码中看到,那些应该是一样的,所以我猜的命名可能是一个因素在这里。



文章来源: MVC4 SelectList not selected default object