2011-02-09 27 views
6

Estoy trabajando con MVC 3 en el momento en que uso ViewBag. Me gustaría probar si se ha asignado una de las propiedades de ViewBag. Sé que en PHP puedes hacer isset (variable), pero ¿hay algo similar en .NET 4?¿Cuál es el equivalente de isset de PHP en C# .NET 4 para propiedades de objetos 'dinámicos'?

El escenario es que estoy haciendo un diseño anidado que toma un título de sección y un subtítulo de sección a través del ViewBag. Están separados por un separador y el subtítulo es opcional. No quiero mostrar el separador si el subtítulo no está configurado.

Así es como me imagino que isset sería reemplazado por .NET 4 equivelant.

@section header 
{ 
    <h2>@ViewBag.SectionTitle</h2> 
    @if(isset(ViewBag.SectionSubTitle)) 
    { 
     <div id="section-title-seperator"> - </div><h3>@ViewBag.SectionSubTitle</h3> 
    } 
} 

Al lado de la respuesta directa a mi pregunta, yo también estoy abierto a soluciones alternativas (en caso de que estoy abusando de la ViewBag).

Gracias de antemano.

Respuesta

14

Puede comprobar si es null así:

@if(ViewBag.SectionSubTitle != null).

isset() en PHP simplemente comprueba si hay un valor presente. Del manual:

isset() devolverá FALSE si la prueba una variable que se ha establecido a NULL

También puede utilizar ViewDataDictionary.ContainsKey en su propiedad ViewData. Debido ViewData["SectionSubTitle"] se equavilient a ViewBag.SectionSubTitle por lo que en este caso se podría hacer:

@if(ViewData.ContainsKey("SectionSubTitle"))

+0

Ahh, bien gracias. Por cierto, solo para asegurarme, no estoy abusando del ViewBag en este caso, ¿verdad? –

+0

Le recomendaría que lo refactorice más adelante. Haz que funcione primero. No abuse de ViewBag, considere agrupar las cosas en modelos separados. –

+0

+1 para ViewData.ContainsKey –

Cuestiones relacionadas