如何以字符串格式显示var

本文关键字:显示 var 格式 字符串 | 更新日期: 2023-09-27 17:59:06

在视图中,
付款1=1200.50
付款2=1500.50

总付款=2701

我希望总付款的格式是逗号。

总付款=2701.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);
}

如何以字符串格式显示var

显示totalpayment使用字符串的位置。Format(Format,totalpayment)或totalpayments。ToString(格式);

正如我所期望的,totalPayment将成为十进制和项目类型。TotalPayment也是十进制类型。对totalpayment进行任何格式化并将其存储在项目中。TotalPayment毫无意义。

假设您在标签lblTotalPayment中显示总付款。你应该做一些类似的事情:

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

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

您必须在最后一条语句中应用格式

project.TotalPayment = (float)Math.Round(totalPayment, 2).ToString("#,##0.00");
 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"

你必须应用这样的格式,希望它能对你有所帮助。

首先,您处理的不是"var",而是一个实际类型(可能是decimaldouble),只是该类型是隐式定义的(也是推断类型)。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器会确定类型。

因此,您实际上要做的是找到一种方法,如何显示具有格式的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)的模型。你可以在这里阅读更多关于DisplayFormatAttribute的信息。