部分类中的DataAnnotations问题

时间:2010-01-20 22:39:10

标签: asp.net-mvc data-annotations partial-classes

所以在我的mvc项目的Project.Repository中我有

[MetadataType(typeof(FalalaMetadata))]
public partial class Falala
{
    public string Name { get; set; }

    public string Age { get; set; }

    internal sealed class FalalaMetadata
    {
        [Required(ErrorMessage="Falala requires name.")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Falala requires age.")]
        public string Age { get; set; }
    }
}

我在我的Project.Web.AccountControllers中使用Falala作为模型,并使用一种方法来获取违规。

时验证是否有效
public class Falala
{
    [Required]
    public string Name { get; set; }

    [Required(ErrorMessage="error")]
    public string Age { get; set; }
}

但不是在使用上面的分部类之后。 我真的需要使用部分类。我在这里做错了什么?

谢谢!

4 个答案:

答案 0 :(得分:1)

我倾向于使用Metadata类,如下所示。

[MetadataType(typeof(FalalaMetadata))]
public partial class Falala
{
    public string Name { get; set; }

    public string Age { get; set; }
}
public class FalalaMetadata
{
    [Required(ErrorMessage="Falala requires name.")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Falala requires age.")]
    public string Age { get; set; }
}

哪种方式适合我。

以下内容也应该有效(并且是实现元数据类的更好方法):

[MetadataTypeAttribute(typeof(Falala.FalalaMetaData))]
public partial class Falala
{
    internal sealed class FalalaMetadata
    {
        [Required(ErrorMessage="Falala requires name.")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Falala requires age.")]
        public string Age { get; set; }
    }
}

答案 1 :(得分:1)

我遇到了类似的问题,最后通过将Model类和Metadata“buddy”类放在同一名称空间中来完成它,即使我的引用似乎没问题。我有点像.net noob但是我对命名空间不太满意,可能是别的。

答案 2 :(得分:1)

嵌套类的内部可能是原因......?

我有一个类似的问题,而且似乎都没有将嵌套的元数据类中的单个字段公开 - 想知道是否整个类内部会导致同样的问题?

答案 3 :(得分:0)

不确定是否有这个帮助,但我遇到了类似的问题并花了好几天时间。最后,这只是一个小改动,为我做了诀窍。

我在配置文件中将UnobtrusiveJavaScriptEnabled更改为false

祝你好运