下拉列表上带有整数值的 ASP.NET mvc 验证标签?

问题描述 投票:0回答:2

我正在开发 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)
吗?我该如何解决它?

c# asp.net asp.net-mvc kendo-ui
2个回答
1
投票

您可以将 RegionId 属性更改为

nullable

[Required(ErrorMessage = "Please select a country.")]
public int? RegionId { get; set; }

0
投票

试试这个:

[Range(1, 999999999, ErrorMessage = "Please select a country.")]

假设默认下拉项的 ID 为零,并且您的所有区域都没有 ID 为零,这应该可行。

© www.soinside.com 2019 - 2024. All rights reserved.