2016-07-29 39 views
0

在視圖中,
PAYMENT1 = 1,200.50
PAYMENT2 = 1,500.50如何顯示字符串格式的變量?

totalpayment = 2701

我希望totalpayment具有與逗號的格式。

totalpayment = 2,701.00

我嘗試使用.ToString,但沒有奏效。任何想法?

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不適用於字符串,您需要使用convert.tostring(),然後在該字符串上應用格式 –

回答

2

適用的格式。無論您在顯示totalpayment使用的String.format(格式,totalpayment)或totalpayment.ToString(格式);

正如我預計totalPayment將成爲十進制類型和project.TotalPayment也是十進制類型。對totalpayment進行任何格式化並將其存儲在project.TotalPayment中是沒有意義的。

可以說您正在以標籤lblTotalPayment顯示總付款。你應該這樣做:

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

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

你在最後的陳述

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

錯誤「無法將類型'字符串'轉換爲'float'」 – 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" 

您必須申請格式那樣,希望這將有助於你。

0

首先,你不處理「變種」,但實際的類型(很可能decimaldouble),僅該類型隱含定義(也推斷出的類型)。 An implicitly typed local variable is strongly typed just as if you had declared the type yourself, but the compiler determines the type.

所以你實際上想要做的是找到一種方法如何顯示帶格式的float

由於project.TotalPaymentfloat和迅速得到它的工作,你可以把它放在一個ViewBag,它的格式轉換爲string,並用它在你的視圖模板,當你與其他兩個屬性。

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

然而,從我看我可以期待,這是從你的ORM生成的屬性和代碼,因此你的問題是,你不能修改TBL_PROJ class。這是視圖模型進入遊戲,併爲你的情況可能會像這樣定義:

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; } } 
} 

那麼你的操作方法是這樣的:

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); 
} 

當然,你將不得不將您的視圖更改爲接受EditPaymentViewModel@model EditPaymentViewModel)類型的型號。 您可以閱讀更多關於DisplayFormatAttributehere

相關問題