2011-08-17 15 views
24

Tengo una plantilla de afeitar como la de abajo. Quiero comprobar si el valor en el campo de entrada es nulo, poner una cadena vacía, si el @UIManager.Member.EMail tiene un valor, poner su valor. ¿Cómo puedo hacer eso?Si el valor es nulo, ponga una cadena vacía en la plantilla de afeitar?

entrada normal:

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

Razor Sintaxis Intento:

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

El valor se muestra en el campo de entrada es:

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

, siempre y cuando UIManager y UIManager.Member son no nulo, esto ya debería funcionar ... ¿puedes ¿aclarar? –

+0

En realidad @ UIManager.Member es inicialmente nulo. Obtiene su valor después de una operación de devolución. Entonces no funciona, tienes razón. Cómo comprobarlo así? –

Respuesta

45

Si suena como lo que desea:

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

Tenga en cuenta que la ubicación de los soportes es crítica; con la maquinilla de afeitar, @(....) define un rango explícito al código - por lo tanto cualquier cosa fuera de los corchetes se tratan como marcado (no código).

+0

Gracias. Esto es lo que necesitaba. –

14

Para verificar algunas propiedades de un modelo en cshtml.

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

así que mejor manera de hacer esto:

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

Estamos tan contentos de poder hacer eso ahora, como en JS. – gdbj

12

Esto es exactamente lo que la propiedad NullDisplayText en [DisplayFormat] attribute es para.

Añadir esta directamente en su modelo:

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

Creo que esta es la mejor respuesta si se considera un enfoque. Mucho más limpio y más fácil de implementar. –

Cuestiones relacionadas