2016-07-29 7 views
0

In der Ansicht
payment1 = 1,200.50
payment2 = 1,500.50Wie wird eine Var im String-Format angezeigt?

totalpayment = 2701

ich die totalpayment will mit Komma das Format haben.

totalpayment = 2,701.00

Ich versuchte .ToString verwenden, aber hat nicht funktioniert. Irgendeine Idee?

public ActionResult Edit(int id, bool update = false) 
{ 
    TBL_PROJ project = db.TBL_PROJ.Find(id); 

    ViewBag.PAYMENT1 = Convert.ToDecimal(project.PAYMENT1).ToString("#,##0.00"); 
    ViewBag.PAYMENT2 = Convert.ToDecimal(project.PAYMENT2).ToString("#,##0.00"); 

    var totalPayment = project.PAYMENT1 + project.PAYMENT2; 
    project.TotalPayment = (float)Math.Round(totalPayment, 2); //This Part 

    return View(project); 
} 
+0

var wird nicht auf string angewendet, Sie müssen convert.tostring() verwenden und danach das Format für diese Zeichenfolge anwenden –

Antwort

2

anwenden Überall dort, wo Sie totalpayment Verwendung string.Format (Format, totalpayment) oder totalpayment.ToString (Format) werden die Anzeige;

Wie ich erwarte TotalPayment würde von Typ dezimal und project.TotalPayment wird auch Dezimal-Typ. Formatierungen der Gesamtanzahlungen vornehmen und im Projekt speichern.TotalPayment macht keinen Sinn.

Nehmen wir an, Sie zeigen die Gesamtbezahlung in einem Label lblTotalPayment an. Sie sollten so etwas wie tun:

lblTotalPayment.Text = string.Format("{0:#,##0.00}", project.TotalPayment); 

oder

lblTotalPayment.Text = project.TotalPayment.ToString("#,##0.00"); 
0

Sie haben letzte Anweisung Format in

project.TotalPayment = (float)Math.Round(totalPayment, 2).ToString("#,##0.00"); 
+0

Fehler "Kann 'String' nicht in 'float' konvertieren" – Waller

0
var aa= 1200.60; 
     var bb = 1245.50; 
     var pay = Math.Round((aa + bb),2).ToString("#,##0.00"); 
Console.WriteLine(pay); 
result will be "2,446.10" 

Sie haben wie das Format zu bewerben, hoffen, dass es für Sie helfen.

0

Zunächst einmal, Sie sind nicht mit „var“, zu tun, sondern ein tatsächlichen Typ (wahrscheinlich decimal oder double), nur dass der Typ implizit (auch gefolgert Typ) definiert ist. An implicitly typed local variable is strongly typed just as if you had declared the type yourself, but the compiler determines the type.

Also was Sie eigentlich tun möchten, ist eine Möglichkeit zu finden, wie man eine float mit Formatierung anzeigen.

Seit project.TotalPayment ist ein float und es schnell bekommen arbeiten, können Sie es in einem ViewBag setzen könnte, wandelt es in string mit Formatierung und verwenden Sie es Ihrer Ansicht nach Vorlage, wie Sie mit den beiden anderen Eigenschaften tun.

ViewBag.TotalPayment = Convert.ToDecimal(totalPayment).ToString("#,##0.00"); 

jedoch aus dem Code, den ich mich sehen kann erwarten, dass dies eine generierte Eigenschaft von Ihrem ORM und damit Ihr Problem ist, dass Sie Ihre TBL_PROJ class nicht ändern können. Hier wird das View-Modell ins Spiel kommt und für Ihren Fall könnte wie so definiert werden:

public class EditPaymentViewModel 
{ 
    public EditPaymentViewModel(decimal p1, decimal p2) 
    { 
     this.Payment1 = p1; 
     this.Payment2 = p2; 
    } 

    [DisplayFormat(DataFormatString = "{0:n2}")] 
    public decimal Payment1 { get; set; } 

    [DisplayFormat(DataFormatString = "{0:n2}")] 
    public decimal Payment2 { get; set; } 

    [DisplayFormat(DataFormatString = "{0:n2}")] 
    public decimal TotalPayment { get { return Payment1+Payment2; } } 
} 

Dann Methode, um Ihre Aktion würde wie folgt aussehen:

public ActionResult Edit(int id, bool update = false) 
{ 
    TBL_PROJ project = db.TBL_PROJ.Find(id); 

    var viewModel = new EditPaymentViewModel(project.Payment1, project.Payment2); 

    return View(project); 
} 

Natürlich müßten Sie Ändern Sie Ihre Ansicht, um das Modell vom Typ EditPaymentViewModel (@model EditPaymentViewModel) zu akzeptieren. Sie können mehr über DisplayFormatAttributehere lesen.

Verwandte Themen