在一个MVC应用程序中,将“逻辑”放在一个人的姓名部分组成全名的位置 - c#

我有3个视图模型,都必须显示一个人的全名。

现在,我可以在所有3个视图模型中重复使用GetFullName()函数,但这并不是那么干。

但是,我应该在哪里留下计算个人全名的逻辑呢?

我是否使用四个字段创建界面(我们计算
四个字段的全名),并在所有3个字段中实现该接口
viewmodels并创建一个“ PersonH​​elper”类
接口并返回一个字符串?
创建自己的类是否逻辑太少?
我是否要为3个视图模型创建具有逻辑的基类? (但是如果我想在API函数中使用该函数呢?)
Helper之所以可以称为PersonService是因为在过去,逻辑是放置在Person类本身中的逻辑,但是现在我们将数据类与行为分开了(所以也许是“ PersonBehaviour”?)

如此简单的事情,以及实现它的多种方式。

您对此有何想法?

参考方案

我们有一个'formatter'类,用于处理某些数据的格式设置,例如在多行或仅一行上显示地址行。

我们这样称呼它:Formatter.FormatAddress(address)其中address是Model类实例。您可以使用您的全名轻松应用这种逻辑。

另一种选择是编写自己的HtmlHelperExtensions,以便您可以执行Html.FormatFullName(Model.FirstName, Model.LastName)

public static IHtmlString FormatFullName(this HtmlHelper helper, params string[] names)
{
    return new MvcHtmlString(helper.Encode(string.Join(" ", names)));
}

将html添加到HtmlHelperExtensions也不被认为是不好的做法,这是很好的恕我直言。

方法链PHP OOP - php

通常,在许多框架中,您可以找到使用查询生成器创建查询的示例。通常您会看到:$query->select('field'); $query->from('entity'); 但是,在某些框架中,您也可以像这样$object->select('field') ->from(�…

PHP OOP:为域实体提供“身份” - php

这里有点抽象的问题。我正在尝试使用“域模型”模式,并用依赖项来限制其他麻烦-我需要一些有关生成用于Identity Map的Identity的建议。在我见过的有关Data Mapper模式的大多数示例中(包括本书中概述的一个示例:http://apress.com/book/view/9781590599099),用户似乎使用setter来手动设置给定Dom…

在高级功能中访问低级功能选项的清晰方法? - python

我编写了一个Python程序包,该程序包经常对低级函数low_level_a(arg)进行间接调用。我所说的“间接”是指该函数通常隐藏在高层函数和类的几层后面。我现在要实现函数的替代版本low_level_b(arg),该函数采用相同类型的参数并返回相同类型的输出。我的目标是允许用户在调用最高级别的函数时在使用low_level_a(arg)和low_lev…

布尔型getter方法的有效JavaBeans名称 - java

我知道大多数变量名都可以使用“is”,例如isBlue(),但是“has”也是有效的前缀,例如hasProperty()吗? 参考方案 根据JavaBeans specification第8.3.2节: 布尔属性 另外,对于 布尔属性,我们允许使用吸气剂 匹配模式的方法:public boolean is<PropertyName>(); 这个 …

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制