我正在开发ASP.NET MVC应用程序,并且已经养成了将看起来有用且方便的吸气剂放入模型/实体类的习惯。
例如:
public class Member
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string FullName
{
get { return FirstName + " " + LastName; }
}
public string FormattedPhoneNumber
{
get { return "(" + PhoneNumber.Substring(0, 3) + ") " + PhoneNumber.Substring(3, 3) + "-" + PhoneNumber.Substring(6); }
}
}
我想知道人们在考虑FullName
和FormattedPhoneNumber
吸气剂。
它们使在整个应用程序中创建标准化数据格式变得非常容易,而且似乎可以节省大量重复代码,但是可以肯定地说,数据格式是在从模型到视图模型的映射中应该处理的东西。
实际上,我最初是在我进行映射的服务层中应用这些数据格式的,但是,这一直成为一种负担,必须不断编写格式器,然后将其应用到许多不同的地方。例如,在大多数视图中,我都使用“全名”,而不得不model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);
在各处键入类似的内容似乎比仅仅键入model.FullName = entity.FullName
(或者,如果您使用类似AutoMapper的内容,可能根本不键入任何内容)要优雅得多。
因此,在数据格式化方面您会在哪里划清界线。在模型中进行数据格式化是否“还可以”,还是“图案异味”?
注意:我的模型中绝对没有任何HTML。我为此使用HTML帮助器。我严格地说的是格式化或合并数据(尤其是经常使用的数据)。
PhoneNumber
可能属于自己的类(我现在已经实现了)。但是FullName
确实是促使我写这个问题的人。但我有兴趣了解通常情况下,将数据格式化/合并等放入模型中是否适用于整个应用程序。从下面的答案来看,这似乎不是反模式,但应谨慎做出决定。