ASP.NET MVC数据批注验证ErrorMessageResourceType

时间:2009-09-10 14:27:52

标签: c# validation data-annotations

使用Data Annotations Valition时,一切正常,直到我尝试使用资源。

这是我得到的错误: “ErrorMessageResourceType”这个名称在当前上下文中不存在。

我使用的代码:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Microsoft.Web.Mvc;

namespace Project.Models  
{  
    [MetadataType(typeof(LanguageMetaData))]
    public partial class Language
    {
    }

    public class LanguageMetaData
    {
        [Required(ErrorMessageResourceType(typeof(Resources.Errors)), 
                  ErrorMessageResourceName = "IdRequired")]
        public object Id { get; set; }

        [Required(ErrorMessageResourceType(typeof(Resources.Errors)), 
                  ErrorMessageResourceName = "NameRequired")]
        public object Name { get; set; }

        public object Flag { get; set; }
        public object IsDefault { get; set; }
    }

}

我找不到任何错误。更有经验的人可以帮我解决错误吗?

谢谢!

3 个答案:

答案 0 :(得分:16)

必须是“ErrorMessageResourceType = typeof(Resources.Errors)” 而不是“ErrorMessageResourceType(typeof(Resources.Errors))”

这是一个小大的愚蠢的错误:D

希望这有助于任何遇到同样问题的人!

答案 1 :(得分:0)

您需要同时使用ErrorMessageResourceTypeErrorMessageResourceName

[EmailAddress(ErrorMessageResourceType = typeof(Resource),ErrorMessageResourceName = "Message_ValidEmail")]

答案 2 :(得分:0)

使用nameof代替字符串是 ErrorMessageResourceName 的更好选择。

这是一个示例:

[StringLength(maximumLength: 60, MinimumLength = 2, ErrorMessageResourceType = typeof(Resources.Register), ErrorMessageResourceName = nameof(Resources.Register.ChooseRole))]