5

使用数据注释验证时,一切正常,直到我尝试使用资源。

这是我得到的错误:当前上下文中不存在名称“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; }
    }
}

我找不到这有什么问题。有经验的人可以帮我解决问题吗?

谢谢!

4

3 回答 3

18

它一定要是

ErrorMessageResourceType = typeof(Resources.Errors)

代替

ErrorMessageResourceType(typeof(Resources.Errors))

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

希望这可以帮助任何有同样问题的人!

于 2009-09-11T14:34:31.323 回答
1

您需要同时使用ErrorMessageResourceTypeErrorMessageResourceName

[EmailAddress(ErrorMessageResourceType = typeof(Resource),ErrorMessageResourceName = "Message_ValidEmail")]
于 2019-07-24T09:37:04.740 回答
0

使用 nameof 而不是 string 是ErrorMessageResourceName的更好选择。

这是一个例子:

[StringLength(maximumLength: 60, MinimumLength = 2, ErrorMessageResourceType = typeof(Resources.Register), ErrorMessageResourceName = nameof(Resources.Register.ChooseRole))]
于 2020-11-26T14:51:45.223 回答