我想写一个小的asp.net网页,通过绑定到转发器来显示一组对象,想到这一点。
基本上我创建的类,我们称之为'Test',有一个整数数据类型的price属性(忽略使用这种类型的限制,我只是以它为例)。但是,我想格式化此属性,以便显示货币和正确的小数位等。
最好的做法是在类中返回一个返回对象的格式化字符串的函数,或者最好在我的Web表单的后端有一个函数来对对象进行操作并返回格式化的字符串?
我之前听说过一个课程应该包含它的所有相关功能,但我也听说过我的N层应用程序中的表示应该保存在“表示层”中。
在我的情况下,最好的方法是什么? (并且如果我没有足够清楚地解释这一点,请道歉!)
谢谢!
答案 0 :(得分:2)
在我看来,从OO的角度来看,这两个选项都是有效的。
由于值是价格(恰好有错误的数据类型),因此将格式设置到数据类中是有意义的。它不是特定于Web界面的东西,如果您开发了不同类型的用户界面,则很可能再次需要这种格式。
另一方面,这是一个演示问题,所以将它放入表示层也是有意义的。
答案 1 :(得分:1)
对于一般的OOP内容,该对象不应暴露实现细节。我选择将其解释为“尽可能避免设置者和吸气剂”。
在你的问题的上下文中,我建议你有一个getPriceDisplay()方法,它返回一个包含格式化价格的字符串。
格式的实际实现隐藏在实现细节中。您可以提供用于格式化,使用某些后端调用或其他内容的通用函数。这些细节应该对“测试”对象的消费者没有任何影响。
答案 2 :(得分:1)
虽然这不是OOP方法,但在我看来,这是扩展方法的好时机。将其称为.ToCurrency()
,其格式为货币...如果需要,可以从Web.Config文件中获取。
修改强>
详细说明一下,我只需在扩展方法中调用.ToString("your-format")
(当然这对于您的特定问题可能就像.ToString("C")
一样简单)。这允许您在一个位置更改整个UI中的格式。我发现在处理Web应用程序中的DateTime
格式时这非常有用。
答案 3 :(得分:0)
不会.ToString("C");
完成这项工作吗?这将是我想象的表示层。