Wes*_*son 2 asp.net-mvc selectlist
我的选择列表没有选择通过代码引入的默认对象.
我首先创建我SelectList喜欢的:
public SelectList CreateSelectList(object objSelected = null)
{
return new SelectList(GetAll().OrderBy(s => s.NumericalValue), "PeriodID", "Name", objSelected);
}
Run Code Online (Sandbox Code Playgroud)
我的objSelected充满了与PeriodID相关联的Guid.
在我的控制器内部,我将我的viewbag变量定义到新的选择列表.
public ActionResult Edit(Guid id)
{
Classroom classroom = classroomRepository.GetByID(id);
ViewBag.PeriodID = periodRepository.CreateSelectList(classroom.PeriodID);
return View(classroom);
}
Run Code Online (Sandbox Code Playgroud)
然后在我的视图中这是我如何显示我的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>
Run Code Online (Sandbox Code Playgroud)
你有两个问题.首先,这个:
@Html.DropDownListFor(model => model.PeriodID, ViewBag.PeriodID as SelectList,
String.Empty, new { @class = "span3" })
Run Code Online (Sandbox Code Playgroud)
将ViewBag.PeriodID更改为ViewBag.Periods或ViewBag.PeriodList.这很令人困惑,如果使用相同的命名对象,MVC会在很多情况下混淆.最好确保所有内容的命名都不同.
其次,SelectList类忽略SelectListItem的selecteditem成员.它根本没用过.DropDownListFor将获取model.PeriodID的值并使其成为选定的值.但是,我在你的代码中看到那些应该是相同的,所以我猜这个命名可能是一个因素.
| 归档时间: |
|
| 查看次数: |
3452 次 |
| 最近记录: |