2015-06-19 73 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" } 
      })