Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MVC] ViewTemplate nullable decimal

Pagina: 1
Acties:

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 21-11 18:02
Hoi allen,

ik heb een klein probleempje met een nullable decimal in een ViewTemplate.

ViewTemplate - currency.cshtml
code:
1
2
3
4
5
6
7
8
@model decimal

@{
    IFormatProvider formatProvider =
        new System.Globalization.CultureInfo("nl-NL");

    <span class="currency">@Model.ToString("C", formatProvider)</span>
}


Wat dit simpelweg doet, hij toont een decimal als bedrag. Bijvoorbeeld de waarde 6.38 wordt getoond als € 6.38.

Echter, ik heb ook een decimal property die nullable is. Op het moment dat er een NULL waarde in deze viewtemplate terecht komt, crasht hij met de melding: The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.Decimal'.

Dus ik dacht @Model te casten naar een decimal als @Model een value heeft (@Model.HasValue).
Maar dit krijg ik dus niet werkend.

Iemand een idee?

  • PressPlayOnTape
  • Registratie: Augustus 2012
  • Laatst online: 21:55

PressPlayOnTape

Loading.. Ready... Run!

Baseer je model op een nullable decimal en check in je view of het een waarde heeft?

code:
1
2
3
4
5
6
7
8
@model decimal?

@{
    IFormatProvider formatProvider = new System.Globalization.CultureInfo("nl-NL");
    var curr = Model.HasValue ? Model.Value.ToString("C", formatProvider) : "Onbekend";
    
    <span class="currency">@curr</span>
}

You know, I rather like this God fellow. He’s very theatrical. A little pestilence here, a plague there... Omnipotence...got to get me some of that.


  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Eens met PressPlay0nTape.

Een value type is impliciet converteerbaar naar een Nullable<> van diezelfde value type. Dus als je een gewone decimal een view template met model type Nullable<decimal> in zou sturen, dat gaat dat ook goed.

Op die manier kun je deftig beide scenario's afdekken.

[ Voor 7% gewijzigd door R4gnax op 21-08-2014 20:38 ]


  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 21-11 18:02
PressPlay0nTape schreef op donderdag 21 augustus 2014 @ 16:57:
Baseer je model op een nullable decimal en check in je view of het een waarde heeft?

code:
1
2
3
4
5
6
7
8
@model decimal?

@{
    IFormatProvider formatProvider = new System.Globalization.CultureInfo("nl-NL");
    var curr = Model.HasValue ? Model.Value.ToString("C", formatProvider) : "Onbekend";
    
    <span class="currency">@curr</span>
}
Ja. Is een nullable decimal inderdaad. Raar dat ik die ? vergeten ben bij het model.
En wat stom dat ik er zelf niet aan gedacht heb om het in een variabele te zetten. :F |:(

Dit werkt inderdaad naar behoren. Top! d:)b

Nu ga ik eerst maar eens wat koffie halen :z

[ Voor 7% gewijzigd door PdeBie op 22-08-2014 09:10 ]