ASP.NET MVC 数据注释验证 ErrorMessageResourceType

6

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

这是我收到的错误: 当前上下文中不存在“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个回答

19

必须是这样的

ErrorMessageResourceType = typeof(Resources.Errors)

取代

ErrorMessageResourceType(typeof(Resources.Errors))

这是一个小错误,但又大又愚蠢:D

希望这对于遇到同样问题的人有所帮助!


1
你需要同时使用 ErrorMessageResourceTypeErrorMessageResourceName
[EmailAddress(ErrorMessageResourceType = typeof(Resource),ErrorMessageResourceName = "Message_ValidEmail")]

1
使用 nameof 而不是 string 是一个更好的选择,特别是在 ErrorMessageResourceName 中。
这是一个例子:
[StringLength(maximumLength: 60, MinimumLength = 2, ErrorMessageResourceType = typeof(Resources.Register), ErrorMessageResourceName = nameof(Resources.Register.ChooseRole))]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接