如何在 Razor 视图中验证业务实体而不是数据实体
How to validate Business Entity in Razor view instead of Data Entity
我正在开发一个分为 4 层的 ASP.NET 应用程序。
- Business Layer
- Data Access Layer
- WCF Services Client
- ASP.NET MVC5 application
我正在使用 AutoMapper 从域 class 映射到业务 class 以及其他方式。我正在使用数据注释:
[StringLength(250)]
[Required(ErrorMessage = "Required Title")]
[Display(Name = "Function Title")]
在视图 ASP.NET Razor 页面中进行了翻译,即通过传递强类型并对其进行验证来创建记录。我的问题是如何在我传递业务 class 以查看强类型并且我不希望数据依赖于业务层或 ASP.Net MVC 应用程序的地方实现这一点?
DAL 实体
[Table("Navigation_Functions")]
public class Navigation_FunctionsEntity
{
public Navigation_FunctionsEntity()
{
}
[Key]
public int Function_ID { get; set; }
[StringLength(250)]
[Required(ErrorMessage = "Required Title")]
[Display(Name = "Function Title")]
public string FunctionName { get; set; }
[Required(ErrorMessage = "Required Hierarchy Level")]
[Display(Name = "Hierarchy Level")]
public int Hierarchy_Level { get; set; }
public ICollection<Navigation_FunctionHierarchy> Navigation_FunctionHierarchy { get; set; }
public ICollection<Navigation_FunctionInAction> Navigation_FunctionInAction { get; set; }
public ICollection<Navigation_FunctionInController> Navigation_FunctionInController { get; set; }
public ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }
}
企业实体
public class Navigation_Functions
{
public int Function_ID { get; set; }
public string FunctionName { get; set; }
public int Hierarchy_Level { get; set; }
public ICollection<Navigation_FunctionHierarchy> Navigation_FunctionHierarchy { get; set; }
public ICollection<Navigation_FunctionInAction> Navigation_FunctionInAction { get; set; }
public ICollection<Navigation_FunctionInController> Navigation_FunctionInController { get; set; }
public ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }
}
我的建议是不要将代码组织成这样的层。这是很多箍,但没有真正的优势。事实上,随着时间的推移,我发现像这样的分层架构实际上阻碍了代码库的重构和发展。图层是为了蛋糕,而不是软件。
我也质疑 WCF 在您的图片中的价值,除了增加延迟和使您的请求变慢之外,我不知道它为解决方案添加了什么。
我正在开发一个分为 4 层的 ASP.NET 应用程序。
- Business Layer
- Data Access Layer
- WCF Services Client
- ASP.NET MVC5 application
我正在使用 AutoMapper 从域 class 映射到业务 class 以及其他方式。我正在使用数据注释:
[StringLength(250)]
[Required(ErrorMessage = "Required Title")]
[Display(Name = "Function Title")]
在视图 ASP.NET Razor 页面中进行了翻译,即通过传递强类型并对其进行验证来创建记录。我的问题是如何在我传递业务 class 以查看强类型并且我不希望数据依赖于业务层或 ASP.Net MVC 应用程序的地方实现这一点?
DAL 实体
[Table("Navigation_Functions")]
public class Navigation_FunctionsEntity
{
public Navigation_FunctionsEntity()
{
}
[Key]
public int Function_ID { get; set; }
[StringLength(250)]
[Required(ErrorMessage = "Required Title")]
[Display(Name = "Function Title")]
public string FunctionName { get; set; }
[Required(ErrorMessage = "Required Hierarchy Level")]
[Display(Name = "Hierarchy Level")]
public int Hierarchy_Level { get; set; }
public ICollection<Navigation_FunctionHierarchy> Navigation_FunctionHierarchy { get; set; }
public ICollection<Navigation_FunctionInAction> Navigation_FunctionInAction { get; set; }
public ICollection<Navigation_FunctionInController> Navigation_FunctionInController { get; set; }
public ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }
}
企业实体
public class Navigation_Functions
{
public int Function_ID { get; set; }
public string FunctionName { get; set; }
public int Hierarchy_Level { get; set; }
public ICollection<Navigation_FunctionHierarchy> Navigation_FunctionHierarchy { get; set; }
public ICollection<Navigation_FunctionInAction> Navigation_FunctionInAction { get; set; }
public ICollection<Navigation_FunctionInController> Navigation_FunctionInController { get; set; }
public ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }
}
我的建议是不要将代码组织成这样的层。这是很多箍,但没有真正的优势。事实上,随着时间的推移,我发现像这样的分层架构实际上阻碍了代码库的重构和发展。图层是为了蛋糕,而不是软件。
我也质疑 WCF 在您的图片中的价值,除了增加延迟和使您的请求变慢之外,我不知道它为解决方案添加了什么。