【问题标题】:Where to place format functions在哪里放置格式函数
【发布时间】:2014-09-30 14:34:07
【问题描述】:

我正在构建我的第一个 n 层应用程序。

  • 第一层是 ASP.net 网站。
  • 第二个是业务层。
  • 第三个是带有 dapper 的数据层。

第二层和第三层用于不同的网站。

当我有税收选项的数字字段时。 1 = 高 BTW 和 2 = 低 btw 和 3 = 无 btw 在业务 Artikel 类中做一个翻译功能是一个好的设计吗? 如果答案是否定的,那么翻译值的正确位置在哪里。 我在视图中使用这个函数来显示文本而不是数字。

例子:

Public Function ArtBtwShow() As String
    Return ArtikelHelper.GetBtwName(ArtBtw)
End Function

GetBtwName 辅助函数:

Shared Function GetBtwName(Btw As String)
    Select Case Btw
        Case "0"
            Return "Geen"
        Case "1"
            Return "Laag"
        Case "2"
            Return "Hoog"

        Case Else
            Return ""
    End Select
End Function

【问题讨论】:

  • 能否在业务逻辑中使用枚举而不是字符串之间的转换?或者,如果BTW 表示业务模型,那么将其设为强类型业务对象?听起来您正在传递一些“神奇值”,您需要手动将它们从一个“神奇值”转换为另一个“神奇值”。答案不是把转换放在哪里,答案是一开始就不要使用它们。
  • 我可以将 ArtBtw 的类型更改为 Enumarable。但是如何设置 Enumarable 项目的显示值?
  • 应该Enumerable吗?这实际上是您的建模结构的问题。如果它是Enumerable<T>,那么您可以通过从集合中选择该元素来显示一个元素,然后显示它。目前还不清楚问题是什么。

标签: asp.net asp.net-mvc dapper n-tier-architecture


【解决方案1】:

我不确定您到底要做什么,但看起来您需要为 Btw 对象使用 Enum 而不是字符串:

Public Enum Btw
    Green = 0
    Laag = 1
    Hoog = 2
End Enum

我认为业务层是放置这个的地方。

然后您可以像这样检索描述:

Public Funtion GetName(btw As Btw)
    return [Enum].GetName(GetType(Btw), (int)btw)
End Function

【讨论】:

  • 谢谢。我尝试将字符串更改为枚举。
  • MVC中的DisplayFor函数显示字符串名称