Ekranowanie zerowalnych właściwości domeny za pomocą ViewModel

Używam Entity Framework 4.0 i korzystam z obiektów POCO. Kiedy zapełniam obiekty POCO z bazy danych, tłumaczę wartości właściwości na własne obiekty domeny, które możemy nazwać moim modelem.

Koniecznie, czy pola mojego Modelu są puste, zależy od tego, czy wartość, którą mapuje w bazie danych, pochodzi z kolumny NULL lub NOT NULL. Nie będę wchodził w szczegóły, ale wartości muszą być puste w DB, ponieważ użytkownik może częściowo zapisać szkic obiektu przed opublikowaniem go publicznie. Mając to na uwadze, mam kilka pól, które są puste. Powiedzmy, że mój model wygląda tak:

public class MyModel
{
   public int? Field1 {get; set; }
   public DateTime? Field2 {get; set; }
   public int Field3 {get; set; }
}

Jeśli użyję tego modelu w moim widoku, wraz z polami dopuszczającymi wartości zerowe, zaczynam otrzymywać błędy, które mówią mi, że nie mogę używać wartości dopuszczalnych dla wartości null jako wartości w różnych miejscach, takich jak pomocniki HTML itp.if (Model.MyBoolField.HasValue && Model.MyBoolField.Value) { // etc }, ale to wydaje się nieporęczne dla widoku.

Rozważałem utworzenie obiektu ViewModel, który dziedziczy po moim oryginalnym obiekcie domeny i manew, niezawierające wartości pustych wersji moich pustych pól, które zwracają odpowiednią wartość, jeśli wersja podstawowa ma wartość NULL. Więc coś w stylu:

public class MyViewModel : MyModel
{
   public new int Field1
   {
      get { return base.Field1 ?? 7; }
   }

   public new DateTime Field2
   {
      get { return base.Field2 ?? DateTime.Now; }
   }
}

Mój problem z tym polega na tym, że nie zawsze znam dobrą wartość „domyślną” do wyświetlenia. Co zrobić, jeśli rzuciłem wyjątek w getterze modelu wyświetlania, gdy wartość bazowa ma wartość null? Czy to kiepska praktyka?

W zasadzie szukam najlepszej praktyki dotyczącej sposobu obsługi pól dopuszczających wartości zerowe w modelu, szczególnie podczas wyświetlania w widoku.

questionAnswers(2)

yourAnswerToTheQuestion