代码之家  ›  专栏  ›  技术社区  ›  Martin

在货币文本中更改美分样式的简单方法

  •  3
  • Martin  · 技术社区  · 16 年前

    我有一个标签(文字,随便什么),上面写着货币($5000.00)。有没有一个简单的方式来风格的分,像使字体大小更小。

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

    任何建议都可以接受,比如一个新的控件而不是标签,不管你有什么。

    5 回复  |  直到 13 年前
        1
  •  1
  •   Scott Schulthess    16 年前

    我将从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
         }
    }
    
        2
  •  3
  •   xximjasonxx    16 年前

    我建议创建一个扩展到label/literal的新控件。你可以称之为MoneyLabel,尽管文字可能更容易处理。从这一点上,您可以重写render方法来更改HTML输出,根据需要格式化字符串。

    引用它并不复杂,页面需要引用存储类的程序集。

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

        3
  •  2
  •   Adam Ralph    16 年前

    我想在一个理想的语义世界里,你可能会做一些类似的事情:

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

    然后随心所欲地设计。

        4
  •  1
  •   Mitchel Sellers    16 年前

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

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

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

        5
  •  1
  •   Chris Shaffer    16 年前

    您可以使用javascript,让客户机完成所有繁重的工作…例如,在jquery中(您必须定义putspansaroundDollarsandCenses()函数)

    <div class="currencyToSplit">$5000.00</div>
    
    $(".currencyToSplit").each(function() { putSpansAroundDollarsAndCents($(this)) });