首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Html.EnumDropdownListFor:显示默认文本

Html.EnumDropdownListFor:显示默认文本
EN

Stack Overflow用户
提问于 2014-02-19 19:06:27
回答 4查看 81.4K关注 0票数 70

在我看来,我有一个enumdropdownlist ( Asp.Net MVC5.1中的一个新特性)。

代码语言:javascript
复制
@Html.EnumDropDownListFor(m => m.SelectedLicense,new { @class="form-control"})

如果我执行上面的代码,我会得到下面枚举的dropdownlist。

代码语言:javascript
复制
public enum LicenseTypes
{
    Trial = 0,
    Paid = 1
}

但在默认情况下,我希望我的dropdownlist有一个值(自定义文本),这就是我尝试过的

代码语言:javascript
复制
@Html.EnumDropDownListFor(m => m.SelectedLicense,"Select a license" ,new { @class="form-control"})

但现在的问题是,当我运行它时,我的下拉列表如下所示

所以,我想要显示的默认文本在默认情况下不会出现。如果用户选择"select a license“并尝试提交表单,它确实会显示一个错误消息"select a license”,但不会显示为默认文本。有什么我需要改变的吗?

Ps:图片是页面加载时的截图。默认情况下,它会将试用显示为选中的选项。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-19 21:49:49

尝试将LicenseTypes start的Index1改为0,如下所示:

代码语言:javascript
复制
public enum LicenseTypes
{
    Trial = 1,
    Paid = 2
}

然后,您可以使用Range attribute验证所选的许可证类型,如下所示:

代码语言:javascript
复制
public class YourViewModel
{
     //Other properties
     [Range(1,int.MaxValue,ErrorMessage = "Select a correct license")]
     public LicenseTypes LicenseTypes { get; set; }
}

最后,在您的观点中:

代码语言:javascript
复制
   @Html.EnumDropDownListFor(m => m.LicenseTypes,"Select a license",new { @class = "form-control"})
   @Html.ValidationMessageFor(m => m.LicenseTypes)
票数 90
EN

Stack Overflow用户

发布于 2014-04-15 21:35:30

在呈现EnumDropDownListFor时,SelectedLicense已经具有该类型的默认值,即0

只需将SelectedLicense属性的类型更改为可以为空的枚举,如下所示:

代码语言:javascript
复制
public LicenseTypes? SelectedLicense { get; set; }

这还允许您继续使用Required属性,我认为该属性更加简洁。Required属性不允许null响应,因此即使您的模型允许null,表单也不允许。

票数 73
EN

Stack Overflow用户

发布于 2014-06-04 21:01:09

我有一个枚举:

代码语言:javascript
复制
public enum Sex
{
    Male,
    Female
}

在我的模型中,我有:

代码语言:javascript
复制
    [DisplayName("Sex")]
    [Required]
    public Sex? Sex { get; set; }

视图中的一个:

代码语言:javascript
复制
    @Html.EnumDropDownListFor(model => model.Sex, "Select sex", new { @class = "form-control", type = "text"})

通过这个,我有一个带有默认选项"Select Female“的下拉列表,但验证只接受enum提供的选项("Male”和"Female")。

在MVC3 (没有EnumDropDownListFor)中,我在模型中使用:

代码语言:javascript
复制
    [DisplayName("Sex")]
    [Required(AllowEmptyStrings=false)]
    public Sex? Sex { get; set; }

    Sex = null;

    Sexes = Repository.GetAutoSelectList<Sex>("");

视图中:

代码语言:javascript
复制
    @Html.DropDownListFor(model => model.Sex, Model.Sexes, new { @class = "form-control", type = "text" })
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21878673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档