2009-08-04 49 views
3

我有一个标签(文字,无论),是充满货币($ 5000.00)。有没有一种简单的方法来设计美分,例如缩小字体大小。我知道我可以分开两个,但我正在使用MVP,并寻找一种简单的方式,而不是将所有这些新属性传递给控件(这些标签中有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 
    } 
} 
1

理想情况下,您需要像下面那样格式化它。

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

你如何做到这一点是有点棘手,你可以有一个“元”和“仙”属性,然后操纵串入格式。

3

我会建议创建一个新的控件,只是扩展到标签/文字。您可以将其称为MoneyLabel,但Literal可能更容易处理。从这一点开始,您可以重写Render方法来更改HTML输出,并根据需要格式化字符串。

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

这样,你是不是从代码隐藏引入CSS和HTML,不必从你所需要的额外的创建JavaScript的,这是非常可重复使用和它进入你如何编写.NET已经

+0

我知道你击败@scottschulthess的答案,他确实提供了代码,所以我给了他信用。 +1虽然。 – Martin 2009-08-05 02:33:23

+0

感谢Martin,并且为了记录我没有从@xximjasonxx窃取我的想法:) – 2009-08-05 12:39:01

1

你可以使用JavaScript,让客户做所有的繁重......例如,在jQuery的(你必须定义putSpansAroundDollarsAndCents()函数)

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

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

我也在几分钟前考虑过这个问题,因为它是最简单的方法(至少据我所能想到的)。 – Martin 2009-08-04 19:10:34

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> 

然后风格去你心中的内容。

相关问题