c# - 派生的RequiredAttribute不起作用

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

我正在尝试实现我自己的RequiredAttribute,其中我调用自定义资源处理程序:

public class LocalizedValidationAttributes
{
    public class LocalizedRequiredAttribute : RequiredAttribute
    {
        private String _resourceString = String.Empty;

        public new String ErrorMessage
        {
            get { return _resourceString; }
            set { _resourceString = GetMessageFromResource(value); }
        }
    }

    private static String GetMessageFromResource(String resourceTag)
    {
        return ResourceManager.Current.GetResourceString(resourceTag);
    }

}

我这样调用它:

[LocalizedValidationAttributes.LocalizedRequiredAttribute(ErrorMessage = "test")]
public String Text { get; set; }

但是 ErrorMessage 的 getter 永远不会被调用。

有什么提示吗?谢谢!

最佳答案

尝试这样:

public class LocalizedRequiredAttribute : RequiredAttribute
{
    public override string FormatErrorMessage(string name)
    {
        return ResourceManager.Current.GetResourceString(name);
    }
}

或者像这样:

public class LocalizedRequiredAttribute : RequiredAttribute
{
    public LocalizedRequiredAttribute(string resourceTag)
    {
        ErrorMessage = GetMessageFromResource(resourceTag);
    }

    private static String GetMessageFromResource(String resourceTag)
    {
        return ResourceManager.Current.GetResourceString(resourceTag);
    }
}

然后:

[LocalizedValidationAttributes.LocalizedRequiredAttribute("test")]
public String Text { get; set; }

关于c# - 派生的RequiredAttribute不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397774/

相关文章:

c# - SQL 2008 - INFORMATION_SCHEMA View 中的外键约束

c# - merge 时 TortoiseGit/Winforms : Resolving Resource. resx

c# - 音频捕获未按预期工作

asp.net - 在 MVC 中控制 SQL 注入(inject)

asp.net-mvc - 使用 YAML 的 Azure DevOps Pipeline 用于解决许多项目

c# - 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

c# - 从 C# 项目创建 WSDL

c# - wsdl.exe 生成的 WCF 服务在 wsdl 中公开私有(private)字段

javascript - 加载页面后使用 Javascript 创建 ASP.NET 标签

asp.net-mvc - 将项目从 ASP.NET MVC1 迁移到 ASP.NET MVC2