1

我将一个对象传递给一个视图并得到一个空引用异常,但该对象不为空。

在此处输入图像描述

在 Action 我有这个简单的代码:

return View(db.Users.First());

查看代码:

    @model User
    @using DG.WEB.Models

    @{
        ViewBag.SecondTitle = "Ver";
        ViewBag.MostraEditarTab = "false";
        ViewBag.MostraApagarTab = "false";
        ViewBag.Tab = "tab2";
        Layout = "~/Views/Conds/_Layout.cshtml";
    }


    <div class="container">
        @if (Model != null)
        {
            <h5>@Model.Nome</h5>

            <div id="container_atalhos">
                <div class="btn-group">
                  <a href="#" class="btn btn-mini"><i class="icon-th-large"></i>&nbsp;Nova frac</a>
                  <a href="#" class="btn btn-mini"><i class="icon-fire"></i>&nbsp;Nova Ocorrência</a>
                  <a href="#" class="btn btn-mini"><i class="icon-shopping-cart"></i>&nbsp;Novo Fornecedor</a>
                  <a href="#" class="btn btn-mini"><i class="icon-file"></i>&nbsp;Novo documento</a>
                  <a href="#" class="btn btn-mini"><i class="icon-pencil"></i>&nbsp;Editar</a>
                  <a href="#" class="btn btn-warning btn-mini"><i class="icon-remove-circle icon-white"></i>&nbsp;Apagar</a>
                </div>
            </div>
        }else{
           @:Not found
        }
</div>

编辑: 我只是测试一个打印视图中第一个用户名称的小代码。它发生在我身上同样的错误!try / catch 显然效果不佳......我不明白。

看图片 在此处输入图像描述

EDIT2: 我发现了错误。在布局页面中有一个错误,由于某种原因,Visual Studio 没有检测到它。

谢谢大家。

4

1 回答 1

-1

通常这样的错误与它们爆炸的地方没有直接关系,而是 IoC / 依赖注入的结果。

基本上发生的是,在后台,依赖注入能够根据需要提供各种对象,但这是一种懒惰的方式。因此,如果某些东西——比如你的布局页面——还不需要,它还不会被创建。

因此,当您访问模型之类的东西时,它可能具有需要布局之类的内部需求,然后依赖注入启动,在您的模型中引发错误,即使该错误根本与模型无关。

这是依赖注入真正困难的方面之一,将来可能会再次困扰您:(。

我所知道的也没有最佳实践来避免这种情况。您逐渐解决问题的方法是继续 AFAIK 的最佳方法。

于 2016-02-09T13:36:19.607 回答