Ist es möglich, die Währung für ein MVC3-Feld mit DataType als DataType.Currency zu erzwingen?

8

Ich schreibe eine MVC3-Anwendung, die eine Reihe von monetären Daten aus einer Datenbank einliest. Das Problem, das ich habe, ist, dass diese Beträge alle in verschiedenen Währungen sind.

Wenn ich den Typ eines Feldes wie folgt einstelle:

%Vor%

Ich erhalte die Nachkommastellen und ein Währungssymbol, das nett aussieht, aber es ist standardmäßig die lokale Währung des Benutzers. Ein US-Benutzer sieht 3.29 , während ein GB-Benutzer £423.29 sieht. Ich kann die Währung überschreiben, indem ich ein <globalization culture="{something}"> in der Web.config verwende, aber das setzt alle Währungsfelder global.

Was wäre der einfachste Weg, ein Feld so zu markieren, dass es mit den richtigen Dezimalstellen und Währungssymbolen dargestellt wird?

In einer idealen Welt würde ich gerne so etwas (für USD) machen können:

%Vor%

und das muss immer als 9.38 dargestellt werden, aber das ist mit den eingebauten Anmerkungen nicht möglich.

    
growse 13.09.2012, 14:25
quelle

3 Antworten

7

So würde ich ein benutzerdefiniertes Attribut erstellen, das das Attribut DataType und einen benutzerdefinierten HTML-Helfer erweitert. Es ist nicht unbedingt der einfachste Weg, aber es würde in der Zukunft Zeit sparen.

BEARBEITEN Incorporated CultureInfo.CreateSpecificCulture(cultureName) anstelle von switch

Benutzerdefiniertes Attribut

%Vor%

Html-Helfer

%Vor%

Sie können das Attribut in Ihrem Modell verwenden

%Vor%

Dann können Sie in Ihrer Ansicht den Helfer mit

verwenden %Vor%

Vorausgesetzt, dass Ihr Modell korrekt übergeben wird.

Offensichtlich müssen Sie eine Fehlerüberprüfung usw. durchführen.

    
simonlchilds 13.09.2012, 15:14
quelle
2

Zeichne die Menge

%Vor%

Erstellen Sie eine Methode, die in eine Zeichenfolge mit exakter Währung

konvertiert %Vor%

Wenn Sie in Ihrer Datenbank zwei Felder oder Spalten gespeichert haben, eine für Wert und eine für Kultur.

Und im Repository oder dem Controller:

%Vor%     
Alberto León 13.09.2012 15:50
quelle
1

Sie müssen die Kultur anwenden:

%Vor%

In diesem Controller wurden Methoden überschrieben:

%Vor%

Lesen Sie die ganze Technik in diesem Blog von NadeemAfana ASP.NET MVC 3 Internationalisierung

    
Alberto León 13.09.2012 14:42
quelle