c# – 格式化逻辑在哪里属于MVC?

假设我的电话号码以10位数字符串的形式存储在数据库中:

0000000000

我想在将此电话号码呈现给用户时将其格式化为:

(000) 000-0000

我在实用程序程序集中有一个扩展方法来处理这种格式:

static string ToPhoneNumber(this string value)
{
    return Regex.Replace(value,@"(\d{3})(\d{3})(\d{4})","($1) $2-$3");
}

我的问题是,我在什么时候应用这种转换?

1)在视图中:

@Model.PhoneNumber.ToPhoneNumber()

2)在视图模型中:

public string FormattedPhoneNumber
{
    get
    {
        return this.PhoneNumber.ToPhoneNumber()
    }
}

3)在控制器中:

usermodel.FormattedPhoneNumber = usermodel.PhoneNumber.ToPhoneNumber()

4)在域模型中(与#2相同的实现)

5)在服务中(与#3相同的实现)

此外,答案取决于它是否是全局格式需求(如电话号码)与单个视图上的隔离一次性格式化?

我会给出我的想法,但不想影响任何答案.

解决方法

我认为决定如何显示数据是一种观点责任.因为只有视图知道可用于演示的内容.另一方面,在控制器中执行它可能更容易.控制器会知道用户的区域设置.总而言之,我认为这几乎没有什么区别.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...