我有一些变量不属于模型属性。 例如:我的模型确实有一个生成decimal
列表的函数。
List<decimal> CreateValues();
我想把它呈现为货币。
@{
var vals = Model.CreateValues();
}
@for (var i = 0; i < vals .Count ; i++)
{
Year @i: @val[i]
}
这样,它就呈现为十进制。
如何在不使用.ToString("C")
的情况下告诉渲染引擎这些值应该呈现为货币?
我认为没有理由,为什么你不应该使用.ToString('C')
.
另一种方法是使用显示模板Decimal.cshtml
@Html.DisplayFor(e => val[i])
。
您还可以为整个列表创建显示模板。但是你需要重构你的视图模型:
[UiHint("DecimalYearList")]
List<decimal> MyList { get; set; }
在你的~Views/DisplayTemplates/DecimalYearList.cshtml
:
@model List<decimal>
@for (var i = 0; i < Model.Count; i++)
{
Year @i: @Model[i].ToString("C")
}
在您看来,这就像打电话一样简单
@Html.DisplayFor(e => e.MyList)
尝试@string.Format("{0:C}", val);