Jak działa walidacja w core 2.0? Jak zrobić pole opcjonalne

0

Sytuacja wygląda tak, że tworzę sobie formularz rejestracyjny z dodatkowymi polami, jedno z ich to numer mieszkania. Początkowo zostało ustanowione jako pole wymagane, jednak po przemyśleniu, wiadomo że musi być opcjonalne.

Teraz aby to zrealizować usunąłem "required" w modelu bazy danych jak i w viewModel. Potem usunąłem bazę, zrobiłem migracje i stworzyłem bazę na nowo. Nic to nie zmieniło. Dodam że jestem mało zaawansowanym programistą.

Powklejam może jakieś skrawki kodu, może tu się okaże co jest źle.

Front

    <div class="form-group">
                <label asp-for="FlatNumber"></label>
                <input asp-for="FlatNumber" class="form-control" />
                <span asp-validation-for="FlatNumber" class="text-danger"></span>
            </div>

Biblioteka z której jest inicjalizowana baza danych, klasa ApplicaitonUser

        public int FlatNumber { get; set; }

ViewModel, klasa która użyta jest do walidacji frontu

        [Display(Name = "Numer mieszkania (opcjonalne)")]
        public int FlatNumber { get; set; }

Dodam, że w źródle kodu w przeglądarce, generowany jest kod automatyczny.

            <div class="form-group">
                <label for="FlatNumber">Numer mieszkania (opcjonalne)</label>
                <input class="form-control" type="number" data-val="true" data-val-required="The Numer mieszkania (opcjonalne) field is required." id="FlatNumber" name="FlatNumber" value="" />
                <span class="text-danger field-validation-valid" data-valmsg-for="FlatNumber" data-valmsg-replace="true"></span>
            </div>

1

Zamień

public int FlatNumber { get; set; }

na

public int? FlatNumber { get; set; }
0

Dzięki działa, a mógłbyś mi wyjaśnić jak to w ogólne z tym jest, że co, istniejące pola w modelu muszą być wypełnione? I co oznacza dokładnie ten '?' za typem? Ciężko mi dotrzeć do tych informacji. Pozdrawiam.

1

Typy wartościowe potrzebują mieć wartość (int), aby móc przypisać im brak wartości (null) opakowujemy je w System.Nullable<T> (int?), tutaj więcej informacji na ten temat:

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/

3

a jak mieszkanie będzie mialo numer 2A to leżysz

0
cw napisał(a):

a jak mieszkanie będzie mialo numer 2A to leżysz

Kolejna słuszna uwaga, dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1