C# 下拉列表值

C# 下拉列表值,c#,asp.net-mvc,linq-to-entities,C#,Asp.net Mvc,Linq To Entities,我为dropdownlist填充了以下代码。我有没有办法在下面添加一个名为“选择值”的项目 private void PopulateCustStatus() { ViewData["custStatus"] = new HEntities().COptions .Select(e => new ConfOptModel { OptID = e.OptID, OptNa

我为dropdownlist填充了以下代码。我有没有办法在下面添加一个名为“选择值”的项目

private void PopulateCustStatus()
{
     ViewData["custStatus"] = new HEntities().COptions
         .Select(e => new ConfOptModel
             {
                 OptID = e.OptID,
                 OptName = e.OptName,
                 ConfigTypeID = e.ConfigTypeID
             })
         .Where(e => e.ConfigTypeID == 2)
         .OrderBy(e => e.OpName);
}

您将返回一个
ConfOptModel
对象列表,因此除非有一个属性指示“选定”值,否则您不能返回

如果我没有专门为视图创建模型(即使用域对象作为“模型”而不是“视图模型”),我通常会将所选项目添加到视图状态:

ViewData["selectedCustStatus"] = selectedID;
然后在标记中创建DropDownList时使用该值


另一个选项是返回
SelectListItem
对象列表,而不是域(
ConfOptModel
)对象。这会在控制器中加入一点视图逻辑,所以使用您更熟悉的

我认为,您试图做的问题是,“无选择”选项(例如“选择值”)与在
PopulateCustStatus()中创建的模型没有相同的“形状”

您可能希望使用
IEnumerable
:-

这给了你更多的灵活性。然后,您可以在顶部插入“选择值”项,如:-

var noSelection = new SelectListItem()
{
  Text = "Select value",
  Value = 0,
  Selected = true
};

ViewData["selectedCustStatus"] =
  new[] { noSelection }.Concat(selectList);
注意:如果要保留以前选择的值,必须将其传递到函数中,并确保匹配的
SelectListItem
将其
selected
属性设置为
true


希望这有帮助

你的下拉列表是什么?ASP.NETMVC?Winforms?“选择值”中需要什么值?@iaingAllway我只能在System.Web.Mvc命名空间中找到ViewData,所以我猜它是Mvc编辑:Woops SharePoint也是()。。。显然我很差劲。@Ian,是的,正如Thomas提到的,这是ASP.NET MVC,我想要的值是0@D Stanley,你能不能请elaborale?。目前假设PopulateCustStatus将在dropdownlist中返回Test、Test2、Test,因此我想在测试的顶部添加Select值。你能告诉我怎么做吗。谢谢你,伊恩,谢谢你的样品
var noSelection = new SelectListItem()
{
  Text = "Select value",
  Value = 0,
  Selected = true
};

ViewData["selectedCustStatus"] =
  new[] { noSelection }.Concat(selectList);