Wpis z mikrobloga

#csharp
mam taką walidacje w modelu [Range(0.1, 9.9, ErrorMessage = "Valuse for field can be only between 0.1 and 9.9")]

czy da się zrobić aby dopuszczalne były tylko wartości z jedną liczbą po przecinku? np: 2.99 było nie prawidłową wartością a 2.9 prawidłową ...
  • 8
@boostasioo: FluentValidation? Bo domyslam sie, ze nie używasz swoich własnych atrybutów.

w sumie możesz spróbowac jakoś tak:

[RegularExpression(@"\d{1,20}(\.\d{1,2})?"

Jestem ujowy w wyrażeniach regularnych. Potestuj sobie na jakimś fiddlerze.

Ale i tak wypadałoby to zrobić via FV jeśli go używasz.
@boostasioo:

a to ma być regexp?

bo tak klasycznie to wystarczy pomnożyć przez 10 i porównać z mnożeniem przez 10 i rzutowaniem na int

Bool check(Double x)
{
if(x * 10 == (int)(x * 10)) return true;
else return false;
}

albo z użyciem funkcji Math.floor()

if(x * 10 == Math.floor(x*10)) return true;
else return false;

Natomiast nie ogarniam regexpów jeszcze, jeśli moja odpowiedź się nie nadaje, to proszę o wytłumaczenie
via Wykop Mobilny (Android)
  • 0
@boostasioo: zaimplementuj interfejs IValidateObject (mogłem przekręcić nazwę) i tam zrób jaka chcesz walidację. Możesz nawet scastowac na string i sprawdzić len.