2016-07-29 41 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

相关问题