C# 如何以字符串格式显示变量?
他认为,,C# 如何以字符串格式显示变量?,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,他认为,, 付款1=1200.50 付款2=1500.50 总付款=2701 我希望totalpayment的格式为逗号 总付款=2701.00 我尝试使用.ToString,但没有成功。有什么想法吗 public ActionResult Edit(int id, bool update = false) { TBL_PROJ project = db.TBL_PROJ.Find(id); ViewBag.PAYMENT1 = Convert.ToDecimal(projec
付款1=1200.50
付款2=1500.50 总付款=2701 我希望totalpayment的格式为逗号 总付款=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);
}
您必须在上一个语句中应用格式
project.TotalPayment = (float)Math.Round(totalPayment, 2).ToString("#,##0.00");
您必须在上一个语句中应用格式
project.TotalPayment = (float)Math.Round(totalPayment, 2).ToString("#,##0.00");
无论何时显示totalpayment,请使用string.Format(格式,totalpayment)或totalpayment.ToString(格式) 正如我预期的那样,totalPayment将成为十进制类型,project.totalPayment也是十进制类型。对totalpayment执行任何格式设置并将其存储在project.totalpayment中都毫无意义 假设您正在标签lblTotalPayment中显示总付款。你应该这样做:
lblTotalPayment.Text = string.Format("{0:#,##0.00}", project.TotalPayment);
或
无论何时显示totalpayment,请使用string.Format(格式,totalpayment)或totalpayment.ToString(格式) 正如我预期的那样,totalPayment将成为十进制类型,project.totalPayment也是十进制类型。对totalpayment执行任何格式设置并将其存储在project.totalpayment中都毫无意义 假设您正在标签lblTotalPayment中显示总付款。你应该这样做:
lblTotalPayment.Text = string.Format("{0:#,##0.00}", project.TotalPayment);
或
你必须应用这样的格式,希望它能对你有所帮助
你必须应用这样的格式,希望它能对你有所帮助
首先,您处理的不是“var”,而是实际类型(可能是
decimal
或double
),只是隐式定义了类型(也是推断类型)
因此,您实际上要做的是找到一种方法,如何使用格式显示浮点值
由于project.TotalPayment
是一个float
,为了快速使其工作,您可以将其放入ViewBag
,将其转换为带格式的string
,并在视图模板中使用,就像处理其他两个属性一样
ViewBag.TotalPayment = Convert.ToDecimal(totalPayment).ToString("#,##0.00");
但是,从我看到的代码中,我可以预期这是ORM生成的属性,因此您的问题是无法修改TBL_PROJ类
。这就是视图模型进入游戏的地方,对于您的情况,可以这样定义:
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
首先,您不是在处理“var”,而是一个实际类型(可能是decimal
或double
),只是隐式定义了类型(也是推断类型)
因此,您实际上要做的是找到一种方法,如何使用格式显示浮点值
由于project.TotalPayment
是一个float
,为了快速使其工作,您可以将其放入ViewBag
,将其转换为带格式的string
,并在视图模板中使用,就像处理其他两个属性一样
ViewBag.TotalPayment = Convert.ToDecimal(totalPayment).ToString("#,##0.00");
但是,从我看到的代码中,我可以预期这是ORM生成的属性,因此您的问题是无法修改TBL_PROJ类
。这就是视图模型进入游戏的地方,对于您的情况,可以这样定义:
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
var将不会应用于字符串的信息,您需要使用convert.tostring()并在该字符串上应用格式之后,var将不会应用于字符串,您需要使用convert.tostring()并在该字符串上应用格式