2016-01-03 9 views
9

Sto utilizzando l'attributo MetaDataType sulla classe del mio modello di dominio. Doveva spostare le informazioni sugli attributi dalla classe di riferimento nella classe che è stata impostata l'attributo MetadataType. Ma non come pubblicizzato. Qual è la causa del problema qui?Attributo MetaDataType Core ASP.NET non funzionante

[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; }   
} 

risposta

17

ASP.NET core utilizza

Microsoft.AspNetCore.Mvc.Core.**ModelMetadataType** 

invece di

System.ComponentModel.DataAnnotations.**MetadataType** 

source

provare a cambiare l'attributo di [ModelMetadataType(typeof(ComponentModelMetaData))]

+2

I miei più sentiti ringraziamenti per la f inding Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute per .NET Core 1.0 ... nome diverso, spazio dei nomi diverso ... non difficile da trovare. Ad ogni modo, questa è la risposta corretta, poiché la Componente di classe parziale sembra essere la dichiarazione del modello. Preferisco utilizzare una classe parziale denominata uguale e nello stesso spazio dei nomi logico del modello per applicare Validate e le annotazioni dei metadati al modello. In questo modo, se rigenera il modello dal database, non perdo le mie modifiche. – Gopher