从 EnumDropDownListFor(...) 中删除空白条目?
Remove blank entry from EnumDropDownListFor(...)?
我找到了一些 S.O。有关此问题的帖子,但 none 已接受的答案对我有用。我正在使用 enum
创建一个 EnumDropDownListFor
并且它正在工作,但我不想在下拉列表的顶部有一个空白条目。我希望用户被迫接受 enum
中的一项。代码如下:
@Html.EnumDropDownListFor(m => m.Foo, new { @class = "input-block-level " + Model.FooThingType, autocomplete = "off", style = "width: 100px;" })
注意上面的内容,我已经根据其他 S.O 中接受的答案尝试了几种变体。帖子,包括在 EnumDropDownListFor(...)
调用中添加和删除各种参数。这只会导致编译时错误,主要是 "no version of EnumDropDownListFor() takes n arguments" 错误。例如:
@Html.EnumDropDownListFor(m => m.Foo, null, new { @class = "input-block-level " + Model.FooThingType, autocomplete = "off", style = "width: 100px;" })
...或...
@Html.EnumDropDownListFor(m => m.Foo, "whatever", new { @class = "input-block-level " + Model.FooThingType, autocomplete = "off", style = "width: 100px;" })
枚举本身:
public enum SomeEnum
{
[Description("Thingie")]
Thingie,
[Description("AnotherThingie")]
AnotherThingie,
[Description("LastThingie")]
LastThingie
}
我也试过这个,但没什么区别:
public enum SomeEnum
{
[Description("Thingie")]
Thingie = 0,
[Description("AnotherThingie")]
AnotherThingie = 1,
[Description("LastThingie")]
LastThingie = 2
}
您没有显示模型,但显然您的 属性 可以为空,即
public SomeEnum? Foo { get; set }
允许 null
值,因此 EnumDropDownListFor()
方法生成一个 null
选项,以便可以选择它。
您可以使 属性 不可为空(这将删除 null
选项)
public SomeEnum Foo { get; set }
或更好,让它可以为空并添加 [Required]
属性以强制用户进行选择以防止发布不足的攻击(请参阅 了解详细说明)
[Required(ErrorMessage = "Please select a ... ")]
public SomeEnum Foo { get; set }
并在视图中添加
@Html.EnumDropDownListFor(m => m.Foo, new { ... })
@Html.ValidationMessageFor(m => m.Foo)
我找到了一些 S.O。有关此问题的帖子,但 none 已接受的答案对我有用。我正在使用 enum
创建一个 EnumDropDownListFor
并且它正在工作,但我不想在下拉列表的顶部有一个空白条目。我希望用户被迫接受 enum
中的一项。代码如下:
@Html.EnumDropDownListFor(m => m.Foo, new { @class = "input-block-level " + Model.FooThingType, autocomplete = "off", style = "width: 100px;" })
注意上面的内容,我已经根据其他 S.O 中接受的答案尝试了几种变体。帖子,包括在 EnumDropDownListFor(...)
调用中添加和删除各种参数。这只会导致编译时错误,主要是 "no version of EnumDropDownListFor() takes n arguments" 错误。例如:
@Html.EnumDropDownListFor(m => m.Foo, null, new { @class = "input-block-level " + Model.FooThingType, autocomplete = "off", style = "width: 100px;" })
...或...
@Html.EnumDropDownListFor(m => m.Foo, "whatever", new { @class = "input-block-level " + Model.FooThingType, autocomplete = "off", style = "width: 100px;" })
枚举本身:
public enum SomeEnum
{
[Description("Thingie")]
Thingie,
[Description("AnotherThingie")]
AnotherThingie,
[Description("LastThingie")]
LastThingie
}
我也试过这个,但没什么区别:
public enum SomeEnum
{
[Description("Thingie")]
Thingie = 0,
[Description("AnotherThingie")]
AnotherThingie = 1,
[Description("LastThingie")]
LastThingie = 2
}
您没有显示模型,但显然您的 属性 可以为空,即
public SomeEnum? Foo { get; set }
允许 null
值,因此 EnumDropDownListFor()
方法生成一个 null
选项,以便可以选择它。
您可以使 属性 不可为空(这将删除 null
选项)
public SomeEnum Foo { get; set }
或更好,让它可以为空并添加 [Required]
属性以强制用户进行选择以防止发布不足的攻击(请参阅
[Required(ErrorMessage = "Please select a ... ")]
public SomeEnum Foo { get; set }
并在视图中添加
@Html.EnumDropDownListFor(m => m.Foo, new { ... })
@Html.ValidationMessageFor(m => m.Foo)