Asp.net 更改货币文本中美分样式的简单方法
我有一个标签(文字,随便什么),里面装满了货币($5000.00)。有没有一种简单的方法来设计美分的样式,比如缩小字体大小 我知道我可以将两者分开,但我正在使用MVP,并且正在寻找一种简单的方法,而不是将所有这些新属性传递给控件(存在4+个标签)Asp.net 更改货币文本中美分样式的简单方法,asp.net,css,Asp.net,Css,我有一个标签(文字,随便什么),里面装满了货币($5000.00)。有没有一种简单的方法来设计美分的样式,比如缩小字体大小 我知道我可以将两者分开,但我正在使用MVP,并且正在寻找一种简单的方法,而不是将所有这些新属性传递给控件(存在4+个标签) 接受任何建议,比如一个新控件而不是标签,无论你得到什么。理想情况下,你需要像下面这样格式化它 $5000.<span class="Cents">00</span> 5000.00美元 如何实现这一点有点棘手,可以使用“美元
接受任何建议,比如一个新控件而不是标签,无论你得到什么。理想情况下,你需要像下面这样格式化它
$5000.<span class="Cents">00</span>
5000.00美元
如何实现这一点有点棘手,可以使用“美元”和“美分”属性,然后将字符串转换为格式。我建议创建一个新控件,该控件仅扩展为Label/Literal。您可以称之为MoneyLabel,尽管文字可能更容易使用。从那时起,您可以重写Render方法来更改HTML输出,并根据需要格式化字符串 引用它并不复杂,页面需要引用存储类的程序集
通过这种方式,您不必从codebehind引入CSS和HTML,也不必根据需要创建额外的JavaScript,而且这是非常可重用的,并且它已经融入到您编写.NET的方式中了您可以使用JavaScript并让客户机完成所有繁重的工作……例如,在jquery中(您必须定义PutspansRoundDollarSandCents()功能)
5000.00美元
$(“.currencyToSplit”).each(function(){putSpansAroundDollarsAndCents($(this))});
我想在一个理想的语义世界中,你可能会这样做:-
<span class="currency-symbol">£</span>
<span class="major-currency-unit">5000</span>
<span class="decimal-point">.</span>
<span class="minor-currency-unit">00</span>
)
5000
.
00
然后随心所欲地设计样式。我将继承label类,然后创建一个新的label类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
}
}
我几分钟前也考虑过这一点,因为这是最简单的方法(至少在我看来是这样)。问题是,虽然我知道从美元金额中分割美分是一个合理的解决方案,我正在寻找一个不需要拆分它们的元素。如果要为每个元素应用特定的样式,我看不出如何避免将它们拆分为单独的输出元素。当然,除了一些讨厌的JavaScript方法之外。我知道你的答案比@scottschulthess好,他的的确提供了代码,所以我给了他荣誉+1尽管如此。谢谢Martin,而且为了记录在案,我没有从@xximjasonxx那里窃取这个想法:)
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
}
}