0

整个下午。

我的视图中有一个下拉列表

    <div class="editor-label">
                    @Html.LabelFor(model => model.SiteTypeId, "SiteType")
                </div>
                <div class="editor-field">
                    @Html.DropDownList("SiteTypeId", (IEnumerable<SelectListItem>) ViewBag.SiteTypeId)
                    @Html.ValidationMessageFor(model => model.SiteTypeId)
                </div>  

模型看起来像这样:

public class SiteType
        {
            [Key]
            public int SiteTypeId { get; set; }
            public string SiteTypeName { get; set; }
        }

目前下拉菜单中只有两个项目:

1 (value) - Foo (item)  
2 (value) - Bar (item)

它通过控制器显示:

public ActionResult Details(Guid id)
    {
        var model = Model(id);

        ViewBag.SiteTypeId = new SelectList(db.SiteTypes, "SiteTypeId", "SiteTypeName");
        return View(model.Details);
    }

用户将相应地对其进行更新,并将其存储在数据库中。

我可以从数据库中获取下拉列表的值没有问题,但是我将如何有效地将这个值绑定到列表?

伙计,我觉得问这个很简单:'(

任何帮助总是很感激。

4

1 回答 1

1

不要为ViewBag包含 SelectList 的参数使用相同的名称作为 DropDownList 帮助器的第一个参数:

ViewBag.SiteTypes = new SelectList(db.SiteTypes, "SiteTypeId", "SiteTypeName");

在视图中:

@Html.DropDownList("SiteTypeId", (IEnumerable<SelectListItem>)ViewBag.SiteTypes)

现在,在提交此表单时的 POST 操作中,选定的值将作为名为 的参数传递SiteTypeId

于 2012-06-29T16:19:14.080 回答