C# 下拉列表值
我为dropdownlist填充了以下代码。我有没有办法在下面添加一个名为“选择值”的项目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
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);