gpt4 book ai didi

c# - 格式化辅助方法属于模型、 View 模型还是单独的类?

转载 作者:行者123 更新时间:2023-11-30 15:32:25 24 4
gpt4 key购买 nike

我有一个存储公司信息(包括税号)的模型。在美国,这些是 9 位数字,通常显示为##-#######。但是,在我的系统中,我将这些存储为不带连字符的字符串 - 因为其他国家/地区的标识号可能在长度和格式上有所不同,所以我不想局限于美国标准。

现在我想对我的 View 进行编程,以其“友好”格式显示美国税号。我现在可以使用我放入 Company 模型类中的辅助方法进行此操作:

public string FormatTaxID(string TaxID)
{
if (Address.Country == "United States")
return Regex.Replace(TaxID, @"(\d{2})(\d{7})", "$1-$2");
else
return TaxID;
}

然后在我看来,我正在使用:

@item.FormatTaxID(item.TaxID)

这一切都很好,但是在模型中存储这样的方法感觉不对 - 感觉这更像是 View / View 模型的责任而不是模型的责任,因为它仅用于表示。

我正在使用 View 模型并考虑将它放在那里,但我有多个底层模型的 View 模型,如果不需要,我不想重复代码。此外,我的索引 View 模型使用集合,我不确定如何将方法应用于其中:

public class CompanyIndexViewModel
{
public IEnumerable<Company> Companies { get; set; }
public IEnumerable<Document> Documents { get; set; }
}

我如何将此方法应用于这样的集合?

另一种选择是创建一个新的帮助程序/实用程序类并将其粘贴在那里。 MVC 约定会规定什么?

最佳答案

对于一次性的,我会说使用 View 模型。如果它是您将一遍又一遍地重复使用的东西,请将其移至您的 View / View 模型/等的实用程序类中。可以引用。

而且,从技术上讲,两种方式都没有错。将该方法放在一个实用程序类中,然后将一个属性添加到您的 View 模型中以返回此方法,例如:

public class CompanyIndexViewModel
{
...
public string TaxID { get; set; }

public string USFormattedTaxID
{
get { return Utilities.FormatTaxID(TaxID); }
}
}

关于c# - 格式化辅助方法属于模型、 View 模型还是单独的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com