【问题标题】:ASP.NET MVC 2 - Property validationASP.NET MVC 2 - 属性验证
【发布时间】:2010-08-17 08:28:43
【问题描述】:

我是 MVC 新手,对验证有疑问。有没有办法动态设置错误信息?

例如,我怎样才能实现以下(忽略硬编码的 50,这可能来自 Web.config 或特定于当前记录的)。

[MetadataType(typeof(DocumentValidation))]
public partial class Document
{
    public class DocumentValidation
    {
        private const int MaxLength = 50;

        [Required(ErrorMessage = "Document Title is required")]
        [StringLength(MaxLength, ErrorMessage = "Must be under " + MaxLength.ToString() + " characters")]
        public string Title { get; set; }
    }

}

谢谢,

【问题讨论】:

    标签: asp.net-mvc-2


    【解决方案1】:

    查看IDataErrorInfo 和我问过的关于IDataErrorInfo vs. DataAnnotations 的问题。

    【讨论】:

    • 感谢您为我指明了正确的方向。我确实尝试过奖励赏金,但它说我必须等待 23 小时。
    【解决方案2】:

    这应该可以通过动态属性实现,但涉及一些技巧:

    Dynamic Attributes in C#

    【讨论】:

      【解决方案3】:

      取决于您尝试更改 ErrorMessage 的动态程度。这可能是您的问题的一种解决方案:haacked.com - Localizing ASP.NET MVC Validation

      这是从资源中获取本地化错误消息的好指南。'

      【讨论】:

      • 嗯,我正在尝试将 StringLength ErrorMessage 设置为可变字符串而不是常量字符串。上面的例子编译失败,报错:属性参数必须是属性参数类型的常量表达式、typeof表达式或数组创建表达式。我只是希望能够根据情况提供自定义错误消息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多