Chr*_*eis 3 validation asp.net-mvc poco n-layer data-annotations
我有一个用C#... .Net 4.0编写的4层Web应用程序:
我的数据层包含一个edmx我的实体层包含我的POCO对象(由t4脚本生成),并且该层在所有其他层中引用.
例如,在创建MVC表单以创建新客户时....我已经在我的实体层中拥有了包含名字,姓氏等字段的客户类,但该自动生成的POCO类没有数据注释用于验证...提交表单时的IE [必需]等
我现在的解决方案是创建新的模型类,它与我的poco类几乎相同,但也有这些额外的验证注释.
我想知道的是,在MVC模型中(在UI层中)使用某些POCO对象是一种简单的方法,而不必几乎重写类...而且还没有修改生成这些POCO类的t4(因为我在t4上没有达到速度.
我在stackoverflow http://automapper.codeplex.com/上的另一篇文章中看到了这个...不确定这是否会这样做或者是最好的解决方案.
如果您的POCO类声明如此:
public class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,如果您只是更改T4以使其成为部分类,则可以在单独的文件中定义:
[MetadataType(typeof(PersonMetadata))]
public partial class Person {
internal class PersonMetadata {
[Required]
// insert other metadata here
public string FirstName { get; set; }
// and if you don't want metadata for lastname, you can leave it out
}
}
Run Code Online (Sandbox Code Playgroud)
两个额外的点 - 元数据类不必嵌套在你定义的部分中,我认为它更整洁.此外,类型不必在元数据类中匹配,因此如果您愿意,可以将它们全部对象(并且您可能会在Web上看到一些像这样的示例)
| 归档时间: |
|
| 查看次数: |
2669 次 |
| 最近记录: |