C# 删除EnumDropDownListFor框顶部的空白/空条目

C# 删除EnumDropDownListFor框顶部的空白/空条目,c#,asp.net-mvc,razor,html-helper,html.dropdownlistfor,C#,Asp.net Mvc,Razor,Html Helper,Html.dropdownlistfor,我正在使用我的枚举呈现一个下拉列表框,我只有3个选项,但出于某种原因,它显示了4个。顶部和默认选项只是空白/空的,我希望将其删除。我希望顶部/默认值为“Option1” 枚举: public enum EventType { [Display(Name = "Option 1")] Option1, [Display(Name = "Option 2")] Option2, [Display(Name = "Option 3")] Option

我正在使用我的枚举呈现一个下拉列表框,我只有3个选项,但出于某种原因,它显示了4个。顶部和默认选项只是空白/空的,我希望将其删除。我希望顶部/默认值为“Option1”

枚举:

public enum EventType
{
    [Display(Name = "Option 1")]
    Option1,

    [Display(Name = "Option 2")]
    Option2,

    [Display(Name = "Option 3")]
    Option3
}
@Html.EnumDropDownListFor(model => model.EventType, null, new { @id = "eventType", @class = "form-control" })
查看:

public enum EventType
{
    [Display(Name = "Option 1")]
    Option1,

    [Display(Name = "Option 2")]
    Option2,

    [Display(Name = "Option 3")]
    Option3
}
@Html.EnumDropDownListFor(model => model.EventType, null, new { @id = "eventType", @class = "form-control" })

感谢您的帮助。

第二个参数是“选项标签”,用于设置下拉列表中的第一项。来自文档:“默认空项的文本”

使用不接受选项标签的重载:

@Html.EnumDropDownListFor(model => model.EventType, new { @id = "eventType", @class = "form-control" })
更新

我刚试过你的密码。当我同时做这两件事时:

@Html.EnumDropDownListFor(model => model.EventType, null, new { @id = "eventType", @class = "form-control" })

我得到:

我在下拉列表中得到另一个选项的唯一时间是当我传入一个字符串作为第二个参数时,例如“选择…”


您是否有可能正在使用javascript向下拉列表中添加项目?

我花了一些时间使上述内容正常工作,但没有成功

我找到了另一种方法:

HTML:

@Html.DropDownList("types",
               Helper.Gettypes(),
               new { @class = "form-control", @title = "---  Choose  ---" })
代码:

publicstaticlist Gettypes()
{
var enums=Enum.GetNames(typeof(WorkLogType)).ToList();
var selectLIst=enums.Select(x=>newselectListItem{Value=x,Text=x});
返回选择列表;
}

我也遇到了同样的问题。解决了从0而不是1开始枚举的问题

public enum EventType
{
[Display(Name = "Option 1")]
Option1,

[Display(Name = "Option 2")]
Option2,

[Display(Name = "Option 3")]
Option3
}

@Html.EnumDropDownListFor(model => model.EventType,      
              new {@id = "eventType", @class = "form-control"  })

我以前尝试过这个,空白值仍然存在,所以我尝试了OP中的内容,空白值还在那里,不知道如何去掉它。我不想让文本成为默认的空项目。当文本框“出现”时,我希望显示第一个枚举,并将其显示在列表顶部。这只是猜测,但您的model.EventType是否可以为null?不确定这是否是添加空选项的原因。@AndrésNava-.NET请将您的最后一条评论作为答案的一部分。在我的例子中,问题的根源是在1而不是0处初始化枚举值,因此MVC控件在其位置创建了一个空值。