WebHU - Programozási kérdések és válaszok

Dinamikus szám/pénznem formázás kiterjesztési módszerrel / html helper

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


Válaszok:


1

A hiba itt az, hogy karakterláncot próbál formázni, nem számot. A String.Format() csak akkor formázható, ha számot ad át. Tehát egyszerűen módosítania kell a paramétert karakterláncról duplára:

public static MvcHtmlString FormatString(this HtmlHelper helper, double numberToFormat, int format)

És ne alakítsa át a számokat a nézetben:

@Html.FormatString(i.ActivityValue, i.DataTypeId)

Ha nem csak dupla értékei vannak, hanem más típusai is (például lebegőpontos vagy decimális), használhatja a object értéket a double helyett:

public static MvcHtmlString FormatString(this HtmlHelper helper, object numberToFormat, int format)
20.11.2012
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..