我有一个N层应用程序,其中Data,Domain和前端图层位于不同的项目中。我正在使用ASP.NET MVC创建网站,我试图通过使用System.ComponentModel.DataAnnotations来添加验证规则。目前我已经完成了域类的属性。 我想知道将验证规则直接应用于Domain类是否是一种好的做法?或者最好在ASP.NET应用程序中创建ViewModels类并将验证规则应用于ViewModel类的属性? 希望这个问题适合在这里 我感谢任何帮助。正确使用ASP.NET MVC应用程序中的DataAnnotations以及单独项目中的Domain类?
0
A
回答
1
ViewModel要好得多,因为ViewModel应该理解它是否能够从用户那里获得有效的输入。然后,您可以使用AutoMapper在转换过程中修复所有其他异常。我还会创建大量自定义,DataAnnotations,DataTypes,编辑器,ModeMetaDataRules和ModelBinder以与应用程序一起使用。
下面是使用自定义模型构建器的ModelFilter的部分代码,我将发布其中的一部分,因为涉及到很多代码,但它应该让您处于正确的轨道上。
public interface IModelMetadataFilter
{
void TransformMetadata(ModelMetadata metadata,
IEnumerable<Attribute> attributes);
}
public class MultilineTextByNameConvention : IModelMetadataFilter
{
public void TransformMetadata(ModelMetadata metadata, IEnumerable<Attribute> attributes)
{
if (!string.IsNullOrEmpty(metadata.PropertyName) &&
string.IsNullOrEmpty(metadata.DataTypeName))
{
if (metadata.PropertyName.ToLower().Contains("notes")
|| metadata.PropertyName.ToLower().Contains("description")
|| metadata.PropertyName.ToLower().Contains("comment")
)
{
metadata.DataTypeName = DataType.MultilineText.ToString();
}
}
}
}
此代码查找具有包含单词“注释”,“说明”和“注释”,自动应用Multitext数据类型属性为所有属性的属性名称每个视图模型。这种类型的代码可以用于很多其他不同的情况。例如像SSN这样的字段可以使用RexExpr DataAnnotation的特定格式,依此类推...
1
您可以在实体的部分类上设置属性,并且自动生成的类不会被覆盖。
例如,
比方说,你有实体TheEntity
用相同的命名空间的单独的文件,你可以这样写:
namespace SameNamespaceAsEntities
{
internal sealed class TheEntityMetadata
{
//AStringInTheEntity appears twice in your project
//once in the auto gen file, and once here
[Required(ErrorMessage = "Field is required.")]
public string AStringInTheEntity{ get; set; }
}
//http://stackoverflow.com/questions/14059455/adding-validation-attributes-with-an-entity-framework-data-model
[System.ComponentModel.DataAnnotations.MetadataType(typeof(TheEntityMetadata))]
public partial class TheEntity : IEntity //you can set contracts
{
相关问题
- 1. 使用ASP.NET的MVC应用程序中的选项卡
- 2. 构建为单个ASP.NET MVC应用程序的多个ASP.NET MVC项目
- 3. 保存应用程序状态ASP.NET MVC中的项目列表?
- 4. 我可以在带有ASP.NET核心Web应用程序(.NET Framework)的单独项目中使用EF6迁移吗?
- 5. 将ASP.NET MVC应用程序放入主MVC应用程序的子目录中?
- 6. DataAnnotations namespase错误时,ASP.NET MVC项目
- 7. ASP.NET MVC - 管理区域或单独的Web应用程序?
- 8. 如何正确安装ASP.NET MVC应用程序作为另一个MVC应用程序的子项?
- 9. Windows应用程序项目中的参考MVC项目
- 10. 是否可以使用MVC项目制作单独的dll?
- 11. 在ASP.NET MVC Core应用程序(RC2)中显示项目版本
- 12. Asp.net MVC应用程序内的虚拟目录应用程序
- 13. Azure中的ASP.NET MVC应用程序与MySQL的应用程序
- 14. 在单独项目中使用EF5rc模型的MVC?
- 15. asp.net mvc应用程序中的System.FormatException
- 16. Asp.Net MVC应用程序中的子域
- 17. 在asp.net mvc应用程序中的TCPClient
- 18. ASP.NET MVC中的单独程序集中的视图
- 19. 沮丧与ASP.NET MVC应用程序的正确体系结构
- 20. 我的ASP.NET MVC应用程序结构是否正确?
- 21. 正在更新应用程序商店中的应用程序以及更多
- 22. 在ASP.NET MVC应用程序中使用AngularJS发布表单
- 23. 的asp.net MVC应用程序
- 24. 如何在单独的ASP.NET MVC项目中使用ASP.NET MVC母版页解决方案
- 25. 如何使用单独的类在rails应用程序中使用?
- 26. asp.net MVC DataAnnotations
- 27. 在ASP.net MVC项目中使用WSDL
- 28. 如何在asp.net mvc项目中正确引用脚本中的图像文件?
- 29. 无法在我的ASP.NET MVC应用程序中正确配置路由
- 30. 从不同的现有ASP.NET Web应用程序调用ASP.NET MVC项目URL
最好创建的ViewModels –
@BrianOgden非常感谢你的帮助。然后我将使用automapper来映射Domain类以查看模型类。如果我可以问,有什么更好的建议? – arvind