c# - RangeAttribute 数据注释未按预期工作

标签 c# asp.net-mvc-2 data-annotations

我正在开发一个 ASP.NET MVC2 应用程序,其中有一个 User 类,其属性名为 SecurityQuestionID,如下所示:

public class User
{
    [RangeAttribute(1, 5, ErrorMessage = "Security Question is required")]
    [DisplayName("Security Question")]
    public virtual int SecurityQuestionID { get; set; }
}

SecurityQuestionID 字段从 View 中的下拉列表中填充,如下所示:

<%: Html.LabelFor(model => model.SecurityQuestionID)%>
<%: Html.DropDownListFor(model => model.SecurityQuestionID, ViewData["securityQuestions"] as SelectList,"Choose a Question",null) %>
<%: Html.ValidationMessageFor(model => model.SecurityQuestionID)%>

Controller 使用 View 数据向 View 发送安全问题,如下所示:

ViewData["securityQuestions"] = new SelectList(_securityQuestionService.GetAll(), "SecurityQuestionID", "Question");

如果我没有从下拉列表中选择问题并点击提交按钮,则会显示“The Security Question field is required.”消息而不是“Security Question is required ”。谁能帮助我理解我在这里做错了什么?

最佳答案

如果整数不可为空,则默认情况下它是必需的。所以范围验证没有失败,但必需验证失败。
您可能希望通过添加必需属性为需要时指定单独的错误消息。

[Required(ErrorMessage="Security Question is required")]

关于c# - RangeAttribute 数据注释未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066196/

相关文章:

c# - linq 中是否有一个哑巴 "all"评估所有元素?

c# - 异步调用 - 如何在 UI 线程上等待它们

asp.net-mvc - MVC LOB 应用程序

asp.net-mvc - 禁用 'The value ' xxx' 对 'yyy' 消息无效

c# - 使用数据注释以编程方式验证?

C# WCF 存储库

c# - 是否需要自定义 Winforms 控件自动生成设计器文件?

c# - 生成数字序列

architecture - ASP.NET MVC 2 Preview 1 - 实现区域的最佳方法是什么?

asp.net-mvc - 该字段必须是数字。如何将此消息更改为另一种语言?