【问题标题】:RuntimeBinderException 'Cannot perform runtime binding on a null reference' in MVC codeMVC 代码中的 RuntimeBinderException '无法对空引用执行运行时绑定'
【发布时间】:2018-10-23 20:06:26
【问题描述】:

在代码行中:

<div class="col-md-11 bky-points-summary-body-content">
    @Html.Raw(model.GetRawValue("body").ToString().Replace("[XXX]", (200 - ViewBag.CurrentBalance).ToString()))
</div>

我遇到了异常:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: '无法执行 空引用上的运行时绑定'

我尝试通过更改对 ViewBag 的引用位置等来重新安排代码,但似乎没有任何帮助。

【问题讨论】:

  • 几乎可以肯定 viewbag 值没有设置,我猜
  • 你能在cshtml的那一行设置断点吗?
  • ViewBag.CurrentBalance 似乎有空值。试试ViewBag.CurrentBalance ?? 0

标签: c# asp.net asp.net-mvc-4


【解决方案1】:

RuntimeBinderException 经常发生在ViewBag 属性为空值时,在这种情况下ViewBag.CurrentBalance 为空值(你不能用空值减去整数值)。

ViewBag.CurrentBalance 为空时,尝试对ViewBag.CurrentBalance 使用带有默认值的空合并运算符,或者从控制器操作中分配它:

@Html.Raw(model.GetRawValue("body").ToString().Replace("[XXX]", 
         (200 - (ViewBag.CurrentBalance ?? 0)).ToString()))

请注意,空合并运算符 (??) 的 operator precendence 低于减法运算符 (-),因此您应该在空合并运算符周围使用括号/括号以获得更高的优先级。

【讨论】:

    猜你喜欢
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多