我有一个标签(文字,无论如何),正在填充货币($ 5000.00)。有没有一种简单的方法来塑造美分,比如缩小字体大小。
我知道我可以将两者分开,但我正在使用MVP,并且正在寻找一种简单的方法,而不是将所有这些新属性传递给控件(这些标签中有4个存在)。
打开任何建议,例如新控件而不是标签,无论你得到什么。
答案 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
}
}