私たちのデータベースは、関連する形式とともに値を保存します。小数点以下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()メソッドを使用してみましたが、どちらも役に立ちませんでした。
どんな助け/提案も大歓迎です。
ありがとう、-ティム