未使用ViewBag或dynamic,Razor Pages仍抛出RuntimeBinderException异常
Razor视图触发RuntimeBinderException异常的疑难问题
问题场景
渲染以下Razor(.cshtml)页面时:
@model AppItem @{ Debugger.Break(); } @if (Model?.HideAds == true) { return; } // ...
抛出异常:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: '无法将null转换为bool类型,因为它是不可为null的值类型'
异常疑点
- 查阅资料得知该异常仅在涉及dynamic类型(如ViewBag)时出现,但当前代码未使用任何dynamic类型
- 调试窗口中,Model及表达式
Model?.HideAds == true的值均能正确计算 - 异常并非来自if语句本身,仅在单步调试进入时触发
更新1
怀疑Model本身是dynamic类型,添加防护逻辑后仍抛出相同异常,且出现反常情况:Model为null时却进入了if语句
更新2
调试器逐行执行时所有值显示均正常,但异常的触发原因仍无法理解
内容的提问来源于stack exchange,提问作者Luke Vo
相关产品推荐
相关产品推荐

