因此,如果我不使用htmlAttributes重载方法,我可以在编辑视图中轻松设置我的下拉列表的选择值。所以下面的有效:
编辑查看剃须刀
@Html.DropDownList("CategoriesId")
控制器
public ActionResult Edit(int? id)
{
if (id==null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Budget budget = db.BudgetData.Find(id);
if (budget == null)
{
return HttpNotFound();
}
ViewBag.CategoriesId = new SelectList(db.Categories, "Id", "Description", budget.CategoriesId);
return View(budget);
}
上面没有问题,但我希望能够使用 htmlAttributes 设置类,而不使用jQuery或类似方法。
当我将编辑视图更改为下面时,它现在有一个很好的引导类,但该记录的选定值现在已经丢失,它始终只显示第一条记录。我确信它很简单,但我是MVC的新手:)
新的htmlAttribute Razor
@Html.DropDownList("CategoriesId", (IEnumerable<SelectListItem>)ViewBag.CategoriesId, new { @class="form-control"})
我也试过下面的控制器代码,但无济于事。
ViewBag.CategoriesId = db.Categories.AsEnumerable().Select(s => new SelectListItem { Text = s.Description, Value = s.Id.ToString(), Selected = budget.CategoriesId == s.Id });
Thanx为帮助人员。
- 编辑回复信息 -
在发现我的 ViewBag.CategoriesId 的DDL与我的模型等不一致导致上述问题之后。我将ViewBag属性更改为 ViewBag.CategoriesDDL ,但当然这不在我的模型中。
所以对于像我这样的非mvc专业人士来说,这就是我为解决这个问题所采取的措施。我只在编辑视图中更改了以下内容:
@Html.DropDownList("CategoriesDDL", (IEnumerable<SelectListItem>)ViewBag.CategoriesId, new { @class = "form-control" })
要:
@Html.DropDownListFor(model => model.CategoriesId, ViewBag.CategoriesDDL as IEnumerable<SelectListItem>, new { @class = "form-control" })
希望这个问题可以帮助那些人:)