如何使用LINQ在ASP.NET MVC SelectList中设置项的.Selected属性?

时间:2011-11-29 14:11:19

标签: asp.net linq asp.net-mvc-2

我正在尝试在视图中的下拉列表的操作方法中填充SelectList。下拉列表在视图上显示得很好但selected属性未显示使用以下代码:

public ActionResult Edit(int ID)
{
    var ctx = new NorthwindEntities();
    var product = ctx.Products.Where(p => p.ProductID == ID).SingleOrDefault();
    var selectList = new SelectList(ctx.Categories, "CategoryID", "CategoryName");
    selectList.Where(s => s.Value == product.CategoryID.ToString()).SingleOrDefault().Selected = true; 
    ViewData["CategoryID"] = selectList;
    return View(product); 
}

但是,将selectedValue参数传递给SelectList构造函数可以完成工作:

var selectList = new SelectList(ctx.Categories, "CategoryID", "CategoryName", product.CategoryID.ToString());

我的猜测是,LINQ探险是问题,或SelectedItem只能在SelectList构造函数中指定。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这个问题在这里得到解答

Set selected value in SelectList after instantiation

如果你仍然认为它是错的,那么打破你的linq查询并检查你是否可以在列表中找到一个对象,然后做一个if(obj!= null){selected = true;}

但是根据我的阅读,所选属性只能在构造函数中设置。

该链接中的

是一个包装器/辅助方法

public static string DropDownListEx(this HtmlHelper helper, string name, SelectList selectList, object selectedValue)
{
    return helper.DropDownList(name, new SelectList(selectList.Items, selectList.DataValueField, selectList.DataTextField, selectedValue));
}

migth帮助你