在我看来,我有一个enumdropdownlist ( Asp.Net MVC5.1中的一个新特性)。
@Html.EnumDropDownListFor(m => m.SelectedLicense,new { @class="form-control"})
如果我执行上面的代码,我会得到下面枚举的dropdownlist。
public enum LicenseTypes
{
Trial = 0,
Paid = 1
}
但在默认情况下,我希望我的dropdownlist有一个值(自定义文本),这就是我尝试过的
@Html.EnumDropDownListFor(m => m.SelectedLicense,"Select a license" ,new { @class="form-control"})
但现在的问题是,当我运行它时,我的下拉列表如下所示
所以,我想要显示的默认文本在默认情况下不会出现。如果用户选择"select a license“并尝试提交表单,它确实会显示一个错误消息"select a license”,但不会显示为默认文本。有什么我需要改变的吗?
Ps:图片是页面加载时的截图。默认情况下,它会将试用显示为选中的选项。
发布于 2014-02-19 21:49:49
尝试将LicenseTypes
start的Index
从1
改为0
,如下所示:
public enum LicenseTypes
{
Trial = 1,
Paid = 2
}
然后,您可以使用Range attribute
验证所选的许可证类型,如下所示:
public class YourViewModel
{
//Other properties
[Range(1,int.MaxValue,ErrorMessage = "Select a correct license")]
public LicenseTypes LicenseTypes { get; set; }
}
最后,在您的观点中:
@Html.EnumDropDownListFor(m => m.LicenseTypes,"Select a license",new { @class = "form-control"})
@Html.ValidationMessageFor(m => m.LicenseTypes)
发布于 2014-04-15 21:35:30
在呈现EnumDropDownListFor
时,SelectedLicense
已经具有该类型的默认值,即0
。
只需将SelectedLicense
属性的类型更改为可以为空的枚举,如下所示:
public LicenseTypes? SelectedLicense { get; set; }
这还允许您继续使用Required
属性,我认为该属性更加简洁。Required
属性不允许null响应,因此即使您的模型允许null,表单也不允许。
发布于 2014-06-04 21:01:09
我有一个枚举:
public enum Sex
{
Male,
Female
}
在我的模型中,我有:
[DisplayName("Sex")]
[Required]
public Sex? Sex { get; set; }
视图中的一个:
@Html.EnumDropDownListFor(model => model.Sex, "Select sex", new { @class = "form-control", type = "text"})
通过这个,我有一个带有默认选项"Select Female“的下拉列表,但验证只接受enum提供的选项("Male”和"Female")。
在MVC3 (没有EnumDropDownListFor)中,我在模型中使用:
[DisplayName("Sex")]
[Required(AllowEmptyStrings=false)]
public Sex? Sex { get; set; }
Sex = null;
Sexes = Repository.GetAutoSelectList<Sex>("");
视图中:
@Html.DropDownListFor(model => model.Sex, Model.Sexes, new { @class = "form-control", type = "text" })
https://stackoverflow.com/questions/21878673
复制相似问题