6

这是我的代码

@if (ViewBag.last5Articles != null)
{
    List<Article> articles = ViewBag.last5Articles;
    foreach (var article in articles)
    {
        <div class="col-md-12">
            <div class="row">
                <h2>@article.Title</h2>
            </div>
            <div class="row">
                <div class="col-md-6">
                    <p>@article.Body</p>
                </div>
            </div>
        </div>
    }
}

我在 foreach 循环的开始处设置了一个断点。我可以看到那篇文章不是空的,它有一个标题和一个正文。但是当我到达 article.Body 并按下 F10(Step Over)时,它突然变成了 Null!

'System.NullReferenceException'App_Web_ayg111kp.dll 中出现类型异常,但未在用户代码中处理”

. 当我完成调试时,黄色屏幕会用这条消息“ Object reference not set to an instance of an object”欢迎我。

任何人都可以向我解释这个问题。我正在使用 .NET 4.5.2 和 MVC 5.2

4

1 回答 1

5

我在这里找到了我(相同)问题的答案

尝试在错误之后注释掉下一个代码行。

在你的情况下,如果你有

<div class="col-md-12">
            <div class="row">
                <h2>@article.Title</h2>
            </div>
            <div class="row">
                <div class="col-md-6">
                    <p>@article.Body</p>
                </div>
            </div>
        </div>
...more html stuff...

<p> @article.SomethingElse </p>

尝试注释掉“@article.SomethinElse”,看看它是否能清除错误

来自链接: “有时编译器无法在剃刀视图中指向具有特定类型错误的确切行,这可能是因为它无法将它们的行号保留在堆栈跟踪或某处。我发现这种情况与 Null Reference Exception 并且当 null 是在 Url.Content 中传递。

因此,当堆栈跟踪显示的行上没有任何错误时,它有助于检查剃刀视图中的下一个 C# 语句。”

于 2014-10-23T19:37:38.010 回答