我正在开发 ASP.NET MVC 4 项目,并且在显示整数字段的正确验证标签时遇到问题。
这是我的模型属性:
[Required(ErrorMessage = "Please enter the title.")]
public string Title { get; set; }
[Required(ErrorMessage = "Please select a country.")]
public int RegionId { get; set; }
这是我的cshtml:
@Html.TextBoxFor(m => m.article.Title, new { @placeholder = "Title", @autofocus = true })
@Html.ValidationMessageFor(m => m.article.Title)
@(Html.Kendo().DropDownList()
.Name("RegionControl")
.DataTextField("Name")
.DataValueField("RegionId")
.OptionLabel("Select one...")
.Events(e => e.Change("RegionChange").DataBound("RegionDataBound"))
.BindTo(Model.regions)
.Value(Model.article.RegionId.ToString())
@Html.ValidationMessageFor(m => m.article.RegionId)
我的问题是标题的验证消息显示正常
("Please enter the title.")
,但下拉列表的验证是默认的("The value 'NaN' is not valid for RegionId.")
。
为什么 RegionId 的验证消息没有显示我在模型中设置的消息
("Please select a country.")
?是因为默认值(OptionLabel)
吗?我该如何解决它?
您可以将 RegionId 属性更改为
nullable
。
[Required(ErrorMessage = "Please select a country.")]
public int? RegionId { get; set; }
试试这个:
[Range(1, 999999999, ErrorMessage = "Please select a country.")]
假设默认下拉项的 ID 为零,并且您的所有区域都没有 ID 为零,这应该可行。