如何在DropDownListFor中设置默认值

问题描述:

我一直在为此工作2天,但无法完成工作。我正在尝试使用默认值创建DropDownListFor(如在编辑页面中)。我让它在没有模型的情况下工作,但是当有模型时,它会将第一个项目显示为默认值,而不是我想要的值。 我想在一个SelectListItem添加所选= TRUE,而在foreach循环中像这样的是,仍然没有工作:如何在DropDownListFor中设置默认值

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 }); 
    } 
} 

这一个工作,但没有一个模型。

我也试过在选择列表的对象一样,添加一个默认值:

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

它要么没有工作或有件事我没理解错,因为我试图适应一些例子,我在这里看到并在msdn的帖子上没有任何成功。

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

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

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

谢谢。

+0

你肯定'Model.Category.Id'持有的价值?如果是这样,它保存在ViewBag.ListingCategories内的值?我建议你在这里发布更多的视图代码。 – ilans 2015-06-11 05:39:08

看到这个answer(由@Elad Lachmi):

SelectListItem具有选定属性。如果您正在动态创建 SelectListItems,那么您可以将所需的一个设置为 Selected = true,它将成为默认设置。

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