小编典典

字符串格式货币

c#

我有这条线

@String.Format("{0:C}", @price)

在我的剃刀视图中。我希望它在价格前面显示一个美元符号,但要显示一个英镑符号。我该如何实现?


阅读 291

收藏
2020-05-19

共1个答案

小编典典

我强烈怀疑问题仅在于处理请求的线程的当前区域性设置不正确。

您可以为整个请求设置它,或者在格式化时指定区域性。无论哪种方式,我都建议 不要
使用string.Format复合格式,除非您确实有超过一件事要格式化(或更广泛的消息)。相反,我将使用:

@price.ToString("C", culture)

它只是使其变得更简单。

编辑:给出您的评论,听起来您可能很想使用英国文化, 而不考虑
用户的文化。因此,再次将英国文化设置为整个请求的线程文化,或者可能在您自己的帮助程序类中添加“常量”:

public static class Cultures
{
    public static readonly CultureInfo UnitedKingdom = 
        CultureInfo.GetCultureInfo("en-GB");
}

然后:

@price.ToString("C", Cultures.UnitedKingdom)

以我的经验,拥有这样一套“命名”的文化可以使使用它的代码更容易阅读,而且您不需要在多个地方正确获取字符串。

2020-05-19