我正在尝试在视图中的下拉列表的操作方法中填充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
构造函数中指定。有什么想法吗?
答案 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帮助你