2010-08-13 12 views
24

Mogę być nieaktualny, ale jedną z zasad, których przestrzegam, jest unikanie wszelkich wartości null.Jak ustawić domyślną wartość pustego ciągu tekstowego TextBox zamiast zerowego

Jednak znalazłem to, że dla mocno wpisanego widoku, w którym użytkownik wprowadza właściwości obiektu, który chcę zapisać, jeśli niektóre pola nie są wprowadzane, są one przypisywane jako puste.

W przypadku próby zapisania zmian sprawdzanie poprawności nie powiedzie się.

Zamiast więc ustawić każdą właściwość na pusty ciąg, w jaki sposób mogę automatycznie ustawić każdy tekst w domyślnym formularzu na pusty ciąg zamiast pustej wartości?

+0

Mam zawsze unikając nulls jak najwięcej dziwne . Null to piękna rzecz. W wierszu rekordu tabeli bazy danych znajduje się kolumna z zerową wartością zerową, co oznacza brak wartości, jak podano wcześniej. Ta wiedza jest tak ważna dla reguł biznesowych i logiki dla firm, które znalazłem od czasu do czasu. –

+0

Widzę, że wartości zerowe są przydatne przy obliczaniu średniej dla zakresu liczb. Również wartość null jest dobra dla dat, które nie zostały jeszcze wprowadzone. W przeciwnym razie, dlaczego null jest lepszy niż pusty ciąg lub zero? Wszystko, co wydaje się robić, to wygenerować więcej kodu płyty kotła, aby zatrzymać niepożądane wyjątki z wyjątkiem zerowych. – arame3333

+0

To dobry punkt, chociaż zamiast sprawdzać, czy w większości tych samych miejsc nie ma wartości zerowej, aby zapobiec niechcianym odwołaniom o wartości zerowej, sprawdzasz, czy! EmptyString). Wyjątki odwołań zerowych stają się stare, ale mogą być dobrym poziomem "kontroli jakości/testowania". Pusty ciąg przechodzi, nie ma wyjątków, ale nie powinien być pusty, null wystrzeliwuje wyjątek, a zatem deweloper może odkryć błędy szybciej. To zabawne, nienawidzę widzieć puste kolumny kolumn w Sql Wybierz wyniki lol –

Odpowiedz

52

Można umieścić następujący atrybut swoimi String właściwości w modelu:

[DisplayFormat(ConvertEmptyStringToNull=false)] 

Więc gdy ktoś księguje formularz z pustymi tekstowych pól, to będzie pusty ciąg zamiast null ...

+0

to jest to, czego szukam. Thanx @Yngve B. Nilsen –

2

Szczerze mówiąc, powiedziałbym, że twoja metodologia kodowania jest przestarzała i wadliwa. Powinieneś obsługiwać wszystkie możliwości, nie jest to trudne. Właśnie do tego służy string.IsNullOrEmpty(value);.

Zgaduję logiki sprawdzania poprawności jest coś takiego:

if (value == string.Empty) { isValid = false; } 

Więc nie obsługuje wartości null. Powinieneś zamienić to sprawdzanie, aby sprawdzało również wartości zerowe.

string value1 = null; 
string value2 = string.Empty; 

string.IsNullOrEmpty(value1); // true 
string.IsNullOrEmpty(value2); // true 
+0

Widzę, że moje pytanie nie jest jasne. Szukam odpowiedzi na metadane lub rozszerzony szablon. To jest pytanie MVC, a nie C#. – arame3333

+0

Umieść kod w swoim pytaniu, abyśmy mogli zobaczyć, co masz zamiar zrobić. – GenericTypeTea

+0

Nie jestem pewien, jaki kod mogę ci pokazać. Mam niektóre pola tekstowe w widoku, a jeśli użytkownik nie wprowadzi wartości przed przesłaniem, domyślnie mają wartość null. Jeśli pola w modelu podstawowym NIE są null możliwe, powoduje to niepowodzenie sprawdzania poprawności. Znalazłem odpowiedź na to pytanie na SO; http://stackoverflow.com/questions/1718501/asp-net-mvc-best-way-to-trim-strings-after-data-entry-mould-i-condate-a-ustom Zamiast przycinania, po prostu ustaw pusty łańcuch na pusty łańcuch. Cieszę się z tej odpowiedzi, ale może jest łatwiejsza? – arame3333

1

Przebiegłem ten problem, gdy zajmowałem się starą usługą, która wymaga pustych ciągów. I stworzył metodę rozszerzenia:

public static string GetValueOrDefault(this string str) 
     { 
      return str ?? String.Empty; 
     } 

więc można używać, gdy chcesz się upewnić, wszelkie ciągi znaków, które są nieważne stają pusty

yourString1.GetValueOrDefault(); 
yourString2.GetValueOrDefault(); 
Powiązane problemy