Używam CodeFirst Entitty framework 5. Mam klasę reprezentującą użytkownika.Zezwalaj na puste ciągi dla pól oznaczonych jako PhoneAttribute lub UrlAttribute
public class User
{
[Key]
public int UserId { get; set; }
[Url]
[DataType(DataType.Url)]
[Required(AllowEmptyStrings= true)]
public string WebSite { get; set; }
[Phone]
[DataType(DataType.PhoneNumber)]
[Required(AllowEmptyStrings = true)]
public string Phone { get; set; }
[Phone]
[DataType(DataType.PhoneNumber)]
[Required(AllowEmptyStrings = true)]
public string Fax { get; set; }
}
Lubię mechanika walidacji dla Phone
i Url
przypisuje się wiele, ale niestety nie powiedzie się podczas sprawdzania poprawności pola oznaczone tymi atrybutami są puste struny, które faktycznie chcą pozwolić. [Required(AllowEmptyStrings = true)]
nie działa z atrybutami Phone
lub Url
. To samo wydaje się mieć zastosowanie do niektórych innych atrybutów DataAnnotations, takich jak EmailAddress
.
Czy istnieje sposób na zezwolenie na puste ciągi dla pól oznaczonych takimi atrybutami?
ja nie używałem modelu spoiwa. Pisałem importera danych, a dane źródłowe zawierają puste e-maile i telefony. Sądzę, że powinienem po prostu przekonwertować puste łańcuchy ze źródła na wartości zerowe. Dziękuję za wyjaśnienie! –
@ Nu-hin. Twój DBA będzie ci dziękować w przyszłości, jeśli masz zamiar oczyścić niejednoznaczne, bezsensowne wartości, takie jak puste ciągi i zastąpić je wartością zerową. Null jest niezdefiniowany lub nieznany. Pusty ciągowy numer telefonu jest niezdefiniowany lub nieznany. Zawsze fajnie jest pracować na bazie db lat później i znaleźć mieszankę pustych, pustych ciągów, białych znaków i zawsze pomocny "NUMER TELEFONU" w polu numeru telefonu. –
Wydaje się to dość pomocne. Tak w * niektórych * sytuacjach, brak wartości oznacza "nieznany", ale "Zdecydowanie pusty" oznacza coś zupełnie innego niż "Nieznany". Są więc przypadki, w których pusty ciąg nie jest "bezcelową wartością". –