在mvc中的比较属性中设置自定义错误消息

时间:2017-12-01 14:34:36

标签: c# .net asp.net-mvc

我正在尝试将两个密码字段与Compare属性进行比较,并且在我的项目中,我使用html帮助程序根据语言ID获取不同语言的消息,并且我无法在错误消息中使用我的方法

[LocalizedRequired("PasswordRequired")]
        public string Password { get; set; }

        [LocalizedRequired("PasswordDoesntMatch")]
        [System.ComponentModel.DataAnnotations.CompareAttribute("Password", ErrorMessage = "Password doesn't match.")]
        public string ConfirmPassowrd { get; set; }

这是没有帮助程序的模型,它工作正常,问题是如果我使用任何返回字符串错误消息的方法根本不起作用。

[LocalizedRequired("PasswordRequired")]
        public string Password { get; set; }

        [LocalizedRequired("PasswordDoesntMatch")]
        [System.ComponentModel.DataAnnotations.CompareAttribute("Password", ErrorMessage = Kuvendi.Infrastructure.MVC.HtmlHelperExtensions.DrawLabel("Password doesn't match")))]
        public string ConfirmPassowrd { get; set; }

draw label是一个html帮助器方法,它返回特定语言id的字符串,helper成功返回字符串并进行测试。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

传递给属性的参数必须是编译时常量,因此不能调用任何辅助方法来生成它们。

但是,您可以提供字符串资源的名称和资源文件。

将选择MVC的语言will be resolved和正确的资源文件的翻译
[LocalizedRequired("PasswordDoesntMatch")]
[System.ComponentModel.DataAnnotations.CompareAttribute("Password", ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "PasswordDoesntMatch")]
public string ConfirmPassowrd { get; set; }