2015-06-19 74 views
0

我有下拉。验证MVC5中的静态下拉

型号

[Required(ErrorMessage = "Please selectvehicle")] 
     public string VehicleRequested { get; set; } 

index.cshtml

@Html.DropDownList("VehicleRequested", new List<SelectListItem> 

       { 
        new SelectListItem{ Text="Active", Value = "1" }, 
        new SelectListItem{ Text="Not-Active", Value = "0" } 
       }) 
        @Html.ValidationMessageFor(model => model.VehicleRequested) 

我看不到所需的费尔德验证追加,男我错了任何地方,请suggst

回答

3

你的下拉列表只有2项,一是与value="0",其他与value="1"两个"0""1"是有效的字符串(既不是null),以便验证总是通过。你的财产永远不会失效,所以你永远不会得到验证错误。

其真不明白为什么你绑定int价值string财产,而事实上你只显示2个值(“有效”和“非激活”),建议你财产真应了bool

如果要添加这样的选择,因为"-please select-"导致如果没有选择的其他2个选项中的一个验证错误,然后使用接受optionLabel

@Html.DropDownList("VehicleRequested", new List<SelectListItem> 
{ 
    new SelectListItem{ Text="Active", Value = "1" }, 
    new SelectListItem{ Text="Not-Active", Value = "0" } 
}, "-Please select-") 
@Html.ValidationMessageFor(model => model.VehicleRequested) 

这将增加第一overload选项为<option value>-Please select-</option>。请注意,value属性没有值,因此如果您在提交时选择了该值,VehicleRequested将为null,您将看到错误消息。

边注:建议你使用强类型的帮手 - @Html.DropDownListFor(m => m.VehicleRequested, ...)和您在控制器打造您Selectist并把它传递给视图作为ViewBag或(更好)视图模型属性。

0

使用@Html.DropDownListFor()

@Html.DropDownListFor((model => model.VehicleRequested, new List<SelectListItem> 

      { 
       new SelectListItem{ Text="Active", Value = "1" }, 
       new SelectListItem{ Text="Not-Active", Value = "0" } 
      })