2009-08-04 46 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> 

然後風格去你心中的內容。

相關問題