2011-08-17 12 views
24

Mam szablon brzytwy, jak poniżej. Chcę sprawdzić, czy wartość w polu wejściowym jest null, wstaw pusty ciąg, jeśli @UIManager.Member.EMail ma wartość, umieścić jego wartość. Jak mogę to zrobić?Jeśli wartość jest pusta, wstaw pusty ciąg na szablonie maszynki do golenia?

Normalna Wejście:

<input name="EMail" id="SignUpEMail" type="text" class="Input" 
     value="@UIManager.Member.EMail" validate="RequiredField" /> 

Razor Składnia Próba:

<input name="EMail" id="SignUpEMail" type="text" class="Input" validate="RequiredField" 
     value="@(UIManager.Member == null) ? string.Empty : UIManager.Member.EMail" /> 

Wartość jest pokazana w polu wejściowym jest:

True ? string.Empty : UIBusinessManager.MemberCandidate.EMail 
+1

dopóki UIManager i UIManager.Member są niezerowe, to powinien już pracować ... można wyjaśniać? –

+0

Właściwie @ UIManager.Member jest początkowo pusty. Otrzymuje swoją wartość po operacji odświeżania. Więc to nie działa, masz rację. Jak to sprawdzić? –

Odpowiedz

45

Jeśli brzmi to jak ty tylko chcesz:

@(UIManager.Member == null ? "" : UIManager.Member.Email) 

Uwaga położenie nawiasów jest krytyczne; z brzytwą, @(....) definiuje zakres jawny dla kodu - stąd wszystko, co poza, jest traktowane jako nawias (nie kod).

+0

Dzięki. Tego właśnie potrzebowałem. –

14

Aby sprawdzić właściwość modelu w cshtml.

@if(!string.IsNullOrEmpty(Model.CUSTOM_PROPERTY)) 
{ 
    <p>@Model.CUSTOM_PROPERTY</p> 
} 
else 
{ 
    <p> - </p> 
} 

więc najlepszym sposobem, aby to zrobić:

@(Model.CUSTOM_PROPERTY ?? "-") 
+0

Cieszę się, że możemy to teraz zrobić, jak w JS. – gdbj

12

To jest dokładnie to, co właściwość NullDisplayText na [DisplayFormat] attribute jest.

Dodaj to bezpośrednio na modelu:

[DisplayFormat(NullDisplayText="", ApplyFormatInEditMode=true)] 
public string EMail { get; set; } 
+1

Wierzę, że jest to najlepsza odpowiedź. Jeśli podejście jest rozważone. Znacznie czystsze i łatwiejsze do wdrożenia. –

Powiązane problemy