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 DisplayFormatAttribute
here lesen.
var wird nicht auf string angewendet, Sie müssen convert.tostring() verwenden und danach das Format für diese Zeichenfolge anwenden –