我们的数据库存储值及其相关格式。有些数字在小数点后有 0 个数字,有些是 1,有些是货币等。
我试图避免在需要显示数据的每个实例中执行以下操作。
@foreach (var i in Model.CandidateHireGoalsAndActivity)
{
if (i.DataTypeId == 3)
{
<tr>
<td>@i.HireGoalName</td>
<td>@i.ActivityValue.ToString("C0")</td>
<td>@i.GoalValue.ToString("C0")</td>
</tr>
}
else if (i.DataTypeId == 2)
{
<tr>
<td>@i.HireGoalName</td>
<td>@i.ActivityValue.ToString("F2")</td>
<td>@i.GoalValue.ToString("F2")</td>
</tr>
}
else if....(etc)
}
我正在尝试编写一个接收字符串和所需格式的基本扩展方法,然后我的代码可能看起来更像这样。
@foreach (var i in Model.CandidateHireGoalsAndActivity)
{
<tr>
<td>@i.HireGoalName</td>
<td>@Html.FormatString(i.ActivityValue.ToString(), i.DataTypeId)</td>
<td>@Html.FormatString(i.GoalValue.ToString(), i.DataTypeId)</td>
</tr>
}
出于某种原因,从我的助手中出来的字符串永远不会被格式化。我传入的任何未格式化的数字都会被传回。我不确定我做错了什么或错过了什么。
辅助方法:
public static MvcHtmlString FormatString(this HtmlHelper helper, string stringToFormat, int format)
{
if (format == 3)
{
return MvcHtmlString.Create(String.Format("{0:C0}", stringToFormat));
}
return MvcHtmlString.Create(String.Format("{0:0}", stringToFormat));
}
我也尝试过返回常规字符串而不是 MvcHtmlString 以及使用 ToString() 方法,但都没有帮助。
非常感谢任何帮助/建议。
谢谢,-蒂姆