我已经下降了。
模型
[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)
我看不到所需的feild验证附加,M我错了任何地方,请建议
答案 0 :(得分:3)
您的下拉列表只有2个项目,一个包含value="0"
,另一个包含value="1"
"0"
和"1"
都是有效字符串(null
都不是)所以验证总是通过。您的财产永远不会无效,因此您永远不会收到验证错误。
为什么将int
值绑定到string
属性并且只显示2个值(“Active”和“Not-Active”)这一事实表明您的属性确实应该是bool
。
如果您要添加"-please select-"
这样的选项,如果未选择其他2个选项之一,则会导致验证错误,请使用接受optionLabel
<的overload / p>
@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)
这会将第一个选项添加为<option value>-Please select-</option>
。请注意,value
属性没有值,因此如果在您提交时将其选中,VehicleRequested
将为null
,您将看到错误消息。
附注:建议您使用强类型帮助程序 - @Html.DropDownListFor(m => m.VehicleRequested, ...)
并在控制器中构建您的Selectist
并将其作为ViewBag
或(更好)传递给视图视图模型属性。
答案 1 :(得分:0)
使用@Html.DropDownListFor()
@Html.DropDownListFor((model => model.VehicleRequested, new List<SelectListItem>
{
new SelectListItem{ Text="Active", Value = "1" },
new SelectListItem{ Text="Not-Active", Value = "0" }
})