2016-01-03 8 views
9

私はドメインモデルクラスでMetaDataType属性を使用しています。参照されるクラスの属性情報を、MetadataType属性が設定されているクラスに移動するはずです。 しかし、広告されたようにはしません。ここで問題を引き起こしているのは何ですか?ASP.NET Core MetaDataType属性が機能しない

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

答えて

17

ASP.NETコアは

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

代わりの

System.ComponentModel.DataAnnotations.**MetadataType** 

source

[ModelMetadataType(typeof(ComponentModelMetaData))]

+2

にfに対する私の最も深い感謝をあなたの属性を変更してみてくださいを使用しています.NET Core 1.0用のMicrosoft.AspNetCore.Mvc.ModelMetadataTypeAttributeを実装しています...異なる名前、異なる名前空間...見つけにくいです。とにかく、部分クラスComponentがモデル宣言のように見えるので、これは正解です。私はモデルと同じ論理名前空間で同じ名前の部分クラスを使用して、Validateとメタデータの注釈をモデルに適用することを好みます。そうすれば、データベースからモデルを再生成すると、編集内容を失うことはありません。 – Gopher

関連する問題