格式化要显示的 ajax.actionlink 文本
本文关键字:actionlink 文本 ajax 显示 格式化 | 更新日期: 2023-09-27 18:34:43
>我的模型中有一个十进制数据类型和一个注释来格式化它,以便它在 3 位数字后添加逗号:
[DisplayFormat(DataFormatString = "{0:#,###0.00}" + " (USD)")]
public decimal PaidAmount { get; set; }
当我有任何DisplayFor(m => m.PaidAmount)
格式正确显示时(1,200.00 美元(。但是,在 Ajax.ActionLink 中,第一个参数需要一个字符串来显示文本,所以我不能使用 lambda 表达式 (m => m.PaidAmount(。当我这样做时:
Ajax.ActionLink(Model.PaidAmount.ToString(), //rest of link params)
格式不适用于链接文本,它只显示一堆没有逗号的数字(1200.00 美元,请注意 1 之后没有逗号(
我的猜测是,使用大写的 'M'odel 版本的模型会丢失其注释属性,有没有办法解决这个问题并将格式应用于 ajax.actionlink?
您可以使用
@Ajax.ActionLink(string.Format("{0:#,##0.00 USD}", Model.PaidAmount), ...)
注意,我认为您的意思是0:#,##0.00
不是0:#,###0.00
(即 10,200.00 美元,而不是 1,0200.00 美元(
在这种情况下,数据注释将不起作用,因为它们是在 HtmlHelpers 中检查的,不会影响常规ToString
。
您可以创建一个分机方法来格式化您的号码并在您的视图中呼叫它:
public static class Extensions
{
public static string ToCurrency(this decimal number)
{
return number.ToString("{0:#,###0.00}") + " (USD)";
}
}
在视图中:(不要忘记直接在视图中或在 web.config 中的视图文件夹下引用扩展类(
Ajax.ActionLink(Model.PaidAmount.ToCurrency(), //rest of link params)