MVC编辑视图使用htmlAttribute重载设置选定的下拉列表值

时间:2014-12-14 17:13:07

标签: asp.net-mvc

因此,如果我使用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" })

希望这个问题可以帮助那些人:)

0 个答案:

没有答案