验证 MVC5 中的静态下拉列表
Validate static dropdown in 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)
我看不到所需的字段验证追加,我哪里错了,请建议
使用@Html.DropDownListFor()
@Html.DropDownListFor((model => model.VehicleRequested, new List<SelectListItem>
{
new SelectListItem{ Text="Active", Value = "1" },
new SelectListItem{ Text="Not-Active", Value = "0" }
})
您的下拉列表只有 2 个项目,一个 value="0"
,另一个 value="1"
"0"
和 "1"
都是有效字符串(null
) 所以验证总是通过。您的 属性 永远不会无效,因此您永远不会收到验证错误。
不太清楚为什么要将 int
值绑定到 string
属性,而且您只显示 2 个值("Active" 和 "Not-Active") 建议你 属性 真的应该是 bool
.
如果你想添加一个选项,如 "-please select-"
,如果未选择其他 2 个选项之一会导致验证错误,则使用 overload 接受 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)
这会将第一个选项添加为 <option value>-Please select-</option>
。请注意 value
属性没有值,因此如果您在提交时选择了它,则 VehicleRequested
将为 null
并且您将看到错误消息。
旁注:建议您使用强类型助手 - @Html.DropDownListFor(m => m.VehicleRequested, ...)
并在控制器中构建 Selectist
并将其作为 ViewBag
或 (更好)视图模型 属性.
我有下拉。
型号
[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)
我看不到所需的字段验证追加,我哪里错了,请建议
使用@Html.DropDownListFor()
@Html.DropDownListFor((model => model.VehicleRequested, new List<SelectListItem>
{
new SelectListItem{ Text="Active", Value = "1" },
new SelectListItem{ Text="Not-Active", Value = "0" }
})
您的下拉列表只有 2 个项目,一个 value="0"
,另一个 value="1"
"0"
和 "1"
都是有效字符串(null
) 所以验证总是通过。您的 属性 永远不会无效,因此您永远不会收到验证错误。
不太清楚为什么要将 int
值绑定到 string
属性,而且您只显示 2 个值("Active" 和 "Not-Active") 建议你 属性 真的应该是 bool
.
如果你想添加一个选项,如 "-please select-"
,如果未选择其他 2 个选项之一会导致验证错误,则使用 overload 接受 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)
这会将第一个选项添加为 <option value>-Please select-</option>
。请注意 value
属性没有值,因此如果您在提交时选择了它,则 VehicleRequested
将为 null
并且您将看到错误消息。
旁注:建议您使用强类型助手 - @Html.DropDownListFor(m => m.VehicleRequested, ...)
并在控制器中构建 Selectist
并将其作为 ViewBag
或 (更好)视图模型 属性.