我使用一个生成的类作为模型,我希望添加DataAnnotation属性它的一些属性。因为它是一个生成的代码,我不想直接添加注释。有另一种方式将其连接到一个属性?

我已经考虑使模型的接口,并且使用部分类来获得生成的类订阅它。有一个不太复杂的解决方案,假设即使将工作?

有帮助吗?

解决方案

是有。你必须创建元数据类,将具有相同的属性,你的原始模型,并将其与MetadataType属性连接到你的模型:

[MetadataType(typeof(MyModelMetadata))]
public partial class OriginalMyModel
{
}

public class MyModelMetadata
{
    [Required]
    public string MyProperty;  

    // ...
}

在该示例ebove OriginalModel是你的正确的模型类,并且MyModelMetadata是仅用于注释属性中使用的一类。 MyModelMetadata应该有你的模型具有相同的属性。

其他提示

您可以使用MetadataType属性的类:

http://msdn.microsoft.com /en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

在实践中,我见过的元数据不同步与生成的模型相当频繁,不过,这可能会导致有些头疼。你可能想看看替代验证机制的代替数据的注释。

我一直在使用流利验证,这是非常容易上手并开始使用。甚至有一个良好的验证,以 XVAL 集成在一块流利的验证2.0(测试版还),您可以把到你的项目的客户端验证。

流利的验证,您可以在一个单独的类定义的验证。所有你需要做的就是添加一个属性到您的生成的类告诉它使用什么样的验证,这可以通过部分类来完成。

另外,你可以创建一个从你的域模型映射到视图具体型号包含数据的注释。在这种情况下,简化了使用类似 AutoMapper 背面的往复映射。然后,如果你的域模型的变化,你会得到编译时错误与元数据的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top