2015-08-30 1 views
1

Каков правильный способ проверки в Razor, если ViewBag имеет значение? Я знаю, что I can doПроверяет ViewBag.Val! = Неверно в Razor?

if(ViewBag.Foo != null) { 
    ... 
} 

Но, глядя на события поток в VS 2015 Я замечаю это порождает (обрабатывается) RuntimeBinderException.

Тот факт, что это вызывает ошибку, заставляет меня подозревать, что это неправильный способ проверить наличие значения и на самом деле наносит вред производительности (хотя я не проводил никакого тестирования). Кроме того, это не поможет вам различать значение, отсутствующее, и значение, установленное на null.

Есть ли более правильный подход?

+1

Это не зависит от бритвы, это просто динамический член. См. Http://stackoverflow.com/questions/2998954/dynamic-how-to-test-if-a-property-is-available, http://stackoverflow.com/questions/9956648/how-do-i-check -if-a-property-exists-on-a-dynamic-anonymous-type-in-c, http://stackoverflow.com/questions/2839598/how-to-detect-if-a-property-exists-on -an-expandoobject, http://stackoverflow.com/questions/10899613/dynamic-object-how-to-tell-if-a-property-is-defined – CodeCaster

+0

Это хороший момент @CodeCaster - любопытно удивил неловкость все эти подходы –

ответ

-1

Невозможно определить разработчиками бритвы, однако вы можете увидеть this, чтобы сделать это самостоятельно, используя метод расширения.

+0

Ну ничего об этом ** требует ** метода расширения - все это просто C# и на самом деле ** не работает ** как метод расширения, поскольку вы не можете расширить динамику. Однако я ценю ссылку на ссылку. –

+0

Сообщение, которое я разделял, говорит о том, что вы сказали в своем комментарии и принятом ответе в адресной динамической теме. – Lali

Смежные вопросы