我有一个存储公司信息的模型,包括税号。在美国,这些是9位数字,通常显示为## - #######。但是,在我的系统中,我将这些字符串存储为没有连字符的字符串 - 因为其他国家/地区的长度和格式可能不同,我不希望仅限于美国标准。
现在我想对我的观点进行编程,以便以“友好”的格式显示美国税号。我现在正在使用我在公司模型类中放置的辅助方法:
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)
这一切都很好,但是在模型中存储这样的方法感觉不对 - 感觉这更像是视图/视图模型的责任而不是模型的责任,因为它仅用于演示。
我正在使用视图模型并考虑将它放在那里,但我有基础模型的多个视图模型,如果我不需要,不想重复代码。此外,我的索引视图模型使用集合,我不知道如何将方法用于它:
public class CompanyIndexViewModel
{
public IEnumerable<Company> Companies { get; set; }
public IEnumerable<Document> Documents { get; set; }
}
我如何将此方法应用于这样的集合?
另一个选择是创建一个新的帮助器/实用程序类并将其粘贴在那里。 MVC惯例要求什么?
答案 0 :(得分:3)
对于一次性,我会说使用视图模型。如果它是您将一遍又一遍地重复使用的东西,请将其移动到您的视图/视图模型/等的实用程序类中。可以参考。
而且,从技术上讲,两种方式都没有错。将该方法放在实用程序类中,然后将属性添加到返回此属性的视图模型中,例如:
public class CompanyIndexViewModel
{
...
public string TaxID { get; set; }
public string USFormattedTaxID
{
get { return Utilities.FormatTaxID(TaxID); }
}
}
答案 1 :(得分:1)
公司的本地化到公司背景的TaxID恰好是公司的财产,而不是演示细节。