首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心MetaDataType属性不工作

ASP.NET核心MetaDataType属性不工作
EN

Stack Overflow用户
提问于 2016-01-03 13:15:04
回答 4查看 17.3K关注 0票数 40

我在域模型类上使用MetaDataType属性。它应该将属性信息从引用的类移动到已设置MetadataType属性的类中。但它不像广告上所说的那样。是什么引起了这个问题?

代码语言:javascript
复制
[MetadataType(typeof(ComponentModelMetaData))]
public partial class Component
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Repo> Repos { get; set; }
    public string Description { get; set; }   
}


public class ComponentModelMetaData
{
    [Required(ErrorMessage = "Name is required.")]
    [StringLength(30, MinimumLength = 3, ErrorMessage = "Name length should be more than 3 symbols.")]
    public string Name { get; set; }
    public ICollection<Repo> Repos { get; set; }
    [Required(ErrorMessage = "Description is required.")]
    public string Description { get; set; }        
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-22 15:07:44

ASP.NET核心用途

代码语言:javascript
复制
Microsoft.AspNetCore.Mvc **ModelMetadataType** 

而不是

代码语言:javascript
复制
System.ComponentModel.DataAnnotations.**MetadataType** 

来源

尝试将属性更改为[ModelMetadataType(typeof(ComponentModelMetaData))]

票数 84
EN

Stack Overflow用户

发布于 2019-02-24 12:57:41

实体类:

代码语言:javascript
复制
namespace CoreProject.Persistence.EFCore
{
    public partial class User
    {
        public User()
        {
            Reader = new HashSet<Reader>();
            Writer = new HashSet<Writer>();
        }

        public int UserId { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public string PasswordHashKey { get; set; }
        public byte Role { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime CreatedUtc { get; set; }
        public DateTime LastUpdateUtc { get; set; }
        public byte Status { get; set; }
        public bool Deleted { get; set; }
        public DateTime? ActivatedUtc { get; set; }
        public bool Test { get; set; }

        public virtual ICollection<Reader> Reader { get; set; }
        public virtual ICollection<Writer> Writer { get; set; }
    }
}

元数据(都必须使用相同的命名空间):

代码语言:javascript
复制
namespace CoreProject.Persistence.EFCore
{
    [ModelMetadataType(typeof(IUserMetadata))]
    public partial class User : IUserMetadata
    {
        public string FullName => FirstName + " " + LastName;
    }

    public interface IUserMetadata
    {
        [JsonProperty(PropertyName = "Id")]
        int UserId { get; set; }

        [JsonIgnore]
        string Password { get; set; }
        [JsonIgnore]
        string PasswordHashKey { get; set; }
        [JsonIgnore]
        byte Role { get; set; }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2019-05-04 12:41:10

另一种方式..。使用相同的命名空间

代码语言:javascript
复制
public class ApirolesMetaData
{
    [Required]
    public string Name { get; set; }
}


[ModelMetadataType(typeof(ApirolesMetaData))]
public partial class Apiroles
{

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34576921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档