0

現在、Web サイトを既存の Web サーバーから新しいマシンに移動しています。

新しいマシンは、IIS6 を実行する WIN Sever 2003 です。このサイトは ASP.Net 2 を使用しています。

machine.config ファイルのセクションに次のコードを追加して<system.web>、Web サイトと今後のサイトでデフォルトの米国設定ではなく南アフリカの地域設定を使用するようにしました。

<globalization culture="en-ZA" uiCulture="en-ZA"/>

これはほとんどうまくいきました - 通貨記号は $ から R に変更されましたが、次のように設定されたグリッドビュー (バインドされたフィールド - DB タイプはお金) に列があります:

DataFormatString="{0:c}"

[編集] - 以下のリチャードの提案に従って、{0:C} でこれを試しました: まだうまくいきません

これは、古いサーバーにあった R 10,000.00 ではなく、まだ 10000.0000 を返しています。

これを修正する方法についてのアイデアはありますか?

ありがとう!

[編集] - これは実際の文化設定とはほとんど関係がないと思い始めています。

私はそれが正常に動作する別のフォームを持っています:

<ItemTemplate>
    <asp:Label ID="Label2" runat="server" Text='<%# Bind("Balance", "{0:c}") %>'></asp:Label>
</ItemTemplate>

機能しないフォームは、テンプレートなしで gridview を使用します。

<asp:BoundField DataField="Amount" HeaderText="Amount" SortExpression="Amount" DataFormatString="{0:C}" >
    <ItemStyle CssClass="al-r" />
</asp:BoundField>
4

3 に答える 3

1

バインドされたフィールドで、HtmlEncode="false" を設定してみてください。

<asp:BoundField DataField="Amount" HeaderText="Amount" SortExpression="Amount" DataFormatString="{0:C}" HtmlEncode="false">
    <ItemStyle CssClass="al-r" />
</asp:BoundField>
于 2009-02-23T14:33:40.650 に答える
0

MSDN では、通貨は小文字ではなく大文字の C で示されます。

(書式指定子は大文字と小文字が区別されます。)


更新: ここでテストを行います。

コード:

class Program {
    static void Main(string[] args) {
        decimal val = 1234567.89M;

        using (var file = new FileStream(args[0], FileMode.Create, FileAccess.Write))
        using (var output = new StreamWriter(file, Encoding.UTF8)) {
            output.WriteLine("Thread culture: " + Thread.CurrentThread.CurrentCulture.Name);
            output.WriteLine("Thread UI culture: " + Thread.CurrentThread.CurrentUICulture.Name);

            var cultures = new[] { "en-US", "en-GB", "af-ZA", "fr-FR", "fr-CA" };
            foreach (var culture in cultures) {
                var ci = new CultureInfo(culture);
                output.WriteLine(String.Format(ci, "{0,-10}: {1:C}", ci.Name, val));
            }
        }
    }
}

出力を与えます:

スレッド カルチャ: en-GB
スレッド UI カルチャ: en-US
en-US : $1,234,567.89
en-GB : £1,234,567.89
af-ZA : R 1,234,567.89
fr-FR : 1 234 567,89 €
fr-CA : 1 234 567,89 $

これは私には問題ないように見えます。

どのように文化を設定していますか?

于 2009-02-23T13:02:24.097 に答える
0

これを手伝ってくれてありがとう。

ASP.Net 2.0 の Service Pack 2 をインストールすることでこの問題を解決しました。再起動後、グリッドは {0:C} で正常に動作しました。

この問題は、自動的に更新されるように設定されるため、運用環境では自動的に修正されます。現在、ローカル オフィス ネットワーク上に新しいサーバーがあり、ファイアウォールが更新を制限しているようです。

教訓:すべてのサーバー ソフトウェアが最新であることを常に確認してください。

于 2009-02-23T15:18:01.993 に答える