如何以字符串格式显示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);
}
显示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",而是一个实际类型(可能是decimal
或double
),只是该类型是隐式定义的(也是推断类型)。隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器会确定类型。
因此,您实际上要做的是找到一种方法,如何显示具有格式的float
。
由于project.TotalPayment
是float
,为了快速使其工作,您可以将其放在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
的信息。