Что такое эквивалентный isset PHP в c # .NET 4 для свойств «динамических» объектов? - PullRequest
6 голосов
/ 09 февраля 2011

Я работаю с MVC 3 в тот момент, когда использую ViewBag. Я хотел бы проверить, было ли назначено одно из свойств ViewBag. Я знаю, что в PHP вы можете сделать isset (переменную), но есть ли что-то похожее в .NET 4?

Сценарий состоит в том, что я делаю вложенный макет, который принимает заголовок раздела и субтитры раздела через ViewBag. Они разделены разделителем, и подзаголовок является необязательным. Я не хочу отображать разделитель, если подзаголовок не установлен.

Вот как я представляю, где isset будет заменен на .NET 4. equivelant.

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

Помимо прямого ответа на мой вопрос, я также открыт для альтернативных решений (на случай, если я злоупотребляю ViewBag).

Заранее спасибо.

1 Ответ

14 голосов
/ 09 февраля 2011

Вы можете проверить, является ли оно null следующим образом:

@if(ViewBag.SectionSubTitle != null).

isset() в PHP на самом деле просто проверяет наличие значения.Из руководства:

isset () вернет FALSE, если тестирование переменной имеет значение NULL

Вы также можете использовать ViewDataDictionary.ContainsKey на вашей ViewData собственности.Поскольку ViewData["SectionSubTitle"] эквивалентно ViewBag.SectionSubTitle, поэтому в этом случае вы можете сделать:

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

...