Cyb*_*cop 63 c# asp.net-mvc drop-down-menu asp.net-mvc-5.1
在我看来,我有一个enumdropdownlist(Asp.Net MVC 5.1中的一个新功能).
@Html.EnumDropDownListFor(m => m.SelectedLicense,new { @class="form-control"})
Run Code Online (Sandbox Code Playgroud)
如果我执行上面的代码,我会得到以下枚举的下拉列表.
public enum LicenseTypes
{
Trial = 0,
Paid = 1
}
Run Code Online (Sandbox Code Playgroud)
但默认情况下,我希望我的下拉列表有一个值(自定义文本),这就是我尝试过的
@Html.EnumDropDownListFor(m => m.SelectedLicense,"Select a license" ,new { @class="form-control"})
Run Code Online (Sandbox Code Playgroud)
但现在问题是当我运行它时,我的下拉列表看起来像这样
因此,默认情况下不显示我想显示的默认文本.如果用户选择"选择许可证"并尝试提交表单,则会显示错误"选择许可证",但不会显示为默认文本.我需要改变什么?
Ps:图像是加载时页面的屏幕截图.默认情况下,它会将"试用"显示为选定选项.
Lin*_*Lin 82
尝试改变Index
的LicenseTypes
,从开始1
不0
低于这样的:
public enum LicenseTypes
{
Trial = 1,
Paid = 2
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用Range attribute
以验证所选的许可证类型,如下所示:
public class YourViewModel
{
//Other properties
[Range(1,int.MaxValue,ErrorMessage = "Select a correct license")]
public LicenseTypes LicenseTypes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
最后,在您看来:
@Html.EnumDropDownListFor(m => m.LicenseTypes,"Select a license",new { @class = "form-control"})
@Html.ValidationMessageFor(m => m.LicenseTypes)
Run Code Online (Sandbox Code Playgroud)
Mic*_*son 66
在EnumDropDownListFor
渲染时,SelectedLicense
已经具有该类型的默认值,即0
.
只需将SelectedLicense
属性的类型更改为可以为空的枚举,如下所示:
public LicenseTypes? SelectedLicense { get; set; }
Run Code Online (Sandbox Code Playgroud)
这也允许您继续使用该Required
属性,我认为该属性非常清晰.该Required
属性不允许空响应,因此即使您的模型允许空值,表单也不会.
rso*_*bon 16
我有一个枚举:
public enum Sex
{
Male,
Female
}
Run Code Online (Sandbox Code Playgroud)
在我的模型中,我有:
[DisplayName("Sex")]
[Required]
public Sex? Sex { get; set; }
Run Code Online (Sandbox Code Playgroud)
在视图中:
@Html.EnumDropDownListFor(model => model.Sex, "Select sex", new { @class = "form-control", type = "text"})
Run Code Online (Sandbox Code Playgroud)
通过这个我有一个默认选项"选择性别"的下拉列表,但验证只接受枚举("男性"和"女性")提供的选项.
在MVC3(没有EnumDropDownListFor)我在模型中使用:
[DisplayName("Sex")]
[Required(AllowEmptyStrings=false)]
public Sex? Sex { get; set; }
Sex = null;
Sexes = Repository.GetAutoSelectList<Sex>("");
Run Code Online (Sandbox Code Playgroud)
在视图中:
@Html.DropDownListFor(model => model.Sex, Model.Sexes, new { @class = "form-control", type = "text" })
Run Code Online (Sandbox Code Playgroud)
Har*_*oon 10
ViewModel类需要在enum属性上设置默认值,以使其成为默认的选定public
public class Test
{
public Cars MyCars { get; set; }
public enum Cars
{
[Display(Name = @"Car #1")]
Car1 = 1,
[Display(Name = @"Car #2")]
Car2 = 2,
[Display(Name = @"Car #3")]
Car3 = 3
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public class EnumController : Controller
{
// GET: Enum
public ActionResult Index()
{
var model = new Test {MyCars = Test.Cars.Car3}; // set default value
return View(model);
}
[HttpPost]
public ActionResult Index(Test model)
{
.....
}
}
Run Code Online (Sandbox Code Playgroud)
视图:
@Html.BeginForm()
{
<div class="panel bg-white">
<div class="panel-header fg-white">
Enums
</div>
<div class="panel-content">
<div class="input-control select size3">
@Html.EnumDropDownListFor(model => model.MyCars)
</div>
</div>
<input type="submit" class="button success large" />
</div>
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70019 次 |
最近记录: |