改变货币文本中单位风格的简便方法

时间:2009-08-04 18:39:22

标签: asp.net css

我有一个标签(文字,无论如何),正在填充货币($ 5000.00)。有没有一种简单的方法来塑造美分,比如缩小字体大小。

我知道我可以将两者分开,但我正在使用MVP,并且正在寻找一种简单的方法,而不是将所有这些新属性传递给控件(这些标签中有4个存在)。

打开任何建议,例如新控件而不是标签,无论你得到什么。

5 个答案:

答案 0 :(得分:3)

我建议创建一个简单扩展到Label / Literal的新控件。您可以将其称为MoneyLabel,尽管Literal可能更容易使用。从那时起,您可以覆盖Render方法以更改HTML输出,根据需要格式化字符串。

引用它并不是那么棘手,页面需要引用存储类的程序集。

通过这种方式,您不会从代码隐藏中引入CSS和HTML,而不必根据需要创建额外的JavaScript,这非常可重用,而且它已经成为您编写.NET的方式

答案 1 :(得分:2)

我认为在理想的语义世界中你可能会做类似的事情: -

<span class="currency-symbol">£</span>
<span class="major-currency-unit">5000</span>
<span class="decimal-point">.</span>
<span class="minor-currency-unit">00</span>

然后根据自己的内容进行调整。

答案 2 :(得分:1)

理想情况下,您需要将其格式化如下。

$5000.<span class="Cents">00</span>

如何完成此操作有点棘手,您可以拥有“美元”和“美分”属性,然后将字符串操作为格式。

答案 3 :(得分:1)

你可以使用javascript并让客户端做所有繁重的工作......例如,在jquery中(你必须定义putSpansAroundDollarsAndCents()函数)

<div class="currencyToSplit">$5000.00</div>

$(".currencyToSplit").each(function() { putSpansAroundDollarsAndCents($(this)) });

答案 4 :(得分:1)

我将继承标签类,然后创建一个新标签类StyledMoneyLabel。 我没有测试过这段代码,但希望你能得到这个想法。

class StyledMoneyLabel : Label
{
    double money = 0.0;

    Render(HtmltextWriter)
    {
        HtmlSpan dollars = new HtmlSpan(CSS_CLASS);
        dollars.Text = money.ToString(FORMAT_STRING_FOR_GETTING_DOLLARS.
        ///etc for decimals and so forth
     }
}