Adatbázisunk az értékeket a hozzájuk tartozó formátummal együtt tárolja. Némelyik számban 0 szám van a tizedesjegy után, van 1, van, amelyik pénznem stb.
Megpróbálom elkerülni, hogy minden esetben a következőket tegyem, az adatokat meg kell jeleníteni.
@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)
}
Megpróbálok írni egy alapvető kiterjesztési módszert, amely megkapja a karakterláncot és a kívánt formátumot, és akkor a kódom inkább így nézhet ki.
@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>
}
Valamilyen oknál fogva a segítőmből kilépő karakterlánc soha nem formázódik. Bármilyen formázatlan számot adok át, az visszakerül. Nem vagyok benne biztos, hogy mit csinálok rosszul, vagy mit hiányolok.
segítő módszer:
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));
}
Megpróbáltam egy normál karakterláncot is visszaadni az MvcHtmlString helyett, valamint a ToString() metódust, de egyik sem segített.
Minden segítséget/javaslatot nagyra értékelünk.
Köszönöm, Tim