0

In meinem ASP.NET Core 1.1 mit EF Core 1.1 nach View anzeigt Cost Wert ohne Dollar-Format. Ich möchte es als, sagen wir, $1,945.25 zeigen. Frage: Was ich vermisse? Hinweis: Ich versuchte this und thisSO Posts aber immer noch das gleiche Problem.Währungsformat Ausgabe in ASP.NET CORE

Modell:

public class costs 
{ 
.... 
....   
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")] 
public float? Costs { get; set; } 
.... 
.... 
} 

TestViewModel:

public class TestViewModel 
{ 
.... 
.... 
public string ProdName{ get; set; } 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")] 
public float? Costs { get; set; } 
.... 
.... 
} 

Ansicht:

@model myProj.Models.TestVewModel 
.... 
.... 
<td>@Html.DisplayFor(t =>t.Cost)</td> 

<td>@Html.EditorFor(t =>t.Cost)</td> 
.... 
.... 

UPDATE:

Der einzige Unterschied, den ich zwischen this Post und this denken kann, man kann sein, dass ich SQL Server 2012 bin mit, der Datentyp real für costs Spalte hat. Aber ich bin mir nicht sicher, ob das ein Grund für das Problem ist. Der real Datentyp wurde über Befehle erstellt.

+0

Nun, für Vorspeisen, verwenden Sie nicht 'float' für Währung. Verwende 'dezimal'. Etwas so einfaches wie .1 kann nicht genau dargestellt werden, ohne eine Näherungslogik zu verwenden. Aber das ist nicht dein Problem. Ich bin mir nicht ganz sicher, was Ihr Problem ist. Ist es nur, dass es nicht korrekt formatiert, auch wenn Sie das DisplayFormat-Attribut und DisplayFor/EditorFor verwenden? Wenn Sie Ihren Code betrachten, platzieren Sie Ihr Attribut auf das Objekt "costs", aber Sie verwenden 'TestVewModel' in Ihrer Ansicht. Ich weiß, du sagst 'TestViewModel' ist" das selbe wie oben ", aber ist es wirklich? Warum geben Sie uns nicht einfach eine kleine nachprüfbare Probe? –

+0

FYI, siehe https://dotnetfiddle.net/2cGikc - Dies zeigt den Wert korrekt formatiert. Offensichtlich machst du etwas, was du uns nicht zeigst, das bricht es. –

+0

@ErikFunkenbusch Das Problem betrifft nur, dass die Datenanzeige nicht korrekt formatiert ist. Die Werte werden korrekt angezeigt, aber genauso wie Zahlen wie '1945.25' statt' $ 1.945.25' habe ich auch das DisplayFormat-Attribut und DisplayFor/EditorFor ausprobiert. Ich habe gerade 'TestViewModel' Code und einen ** UPDATE ** Abschnitt hinzugefügt, falls es hilft. Würden sich die tatsächlichen Werte auch ändern, wenn man "float" in "decimal" ändert? – nam

Antwort