如何在DropDownListFor中设置默认值

时间:2015-02-10 19:57:39

标签: asp.net asp.net-mvc html.dropdownlistfor

我已经为此工作了2天,但我无法使其发挥作用。我尝试使用默认值创建DropDownListFor(就像在编辑页面中一样)。我没有模型就可以工作,但是当有模型时,它会将第一个项目显示为默认项目,而不是我想要的项目。 我尝试在SelectListItem中添加一个Selected = true,同时在这样的foreach循环中,仍然不起作用:

List<SelectListItem> selectListCategories = new List<SelectListItem>();
foreach(var item in listCategories)
{
    if(item.Id == Model.Category.Id)
    {
        selectListCategories.Add(new SelectListItem { Value = item.Id.ToString(), Text = item.Name, Selected=true });
    }
    else
    {
        selectListCategories.Add(new SelectListItem { Value = item.Id.ToString(), Text = item.Name });
    }
}

这个有效,但没有模特。

我还尝试在SelectList对象中添加一个默认值:

@Html.DropDownListFor(model => model.Category, new SelectList(ViewBag.ListingCategories, "Id", "Name", Model.Category.Id))

它要么不起作用,要么我没有正确理解,因为我尝试调整我在这里和msdn帖子上看到的一些例子,但没有任何成功。

ViewBag.ListingCategories包含从我的数据库中获取的IEnumerable我的类别列表。

当然,Model.Category包含一个带有Id的Category对象(这是另一个表的外键)和一个名称。

现在我没有选择,所以希望我能在这里找到帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

answer(@Elad Lachmi):

  

SelectListItem具有Selected属性。如果你正在创建   动态选择ListItems,你可以设置你想要的那个   Selected = true,它将是默认值。

SelectListItem defaultItem = new SelectListItem()
{
   Value = 1,
   Text = "Deafult Item",
   Selected = true
};