尝试访问ViewBag属性会关闭我的应用程序

时间:2017-03-01 09:29:52

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

我无法理解为什么我的应用崩溃了。这是我在控制器中的动作:

public ActionResult AttachmentsPartial(Guid processId)
{
    var staff = GetCurrentStaff();
    var process = Db.Processes.Include(nameof(Stages)).FirstOrDefault(p => p.Id == processId);

    if (process != null && staff != null)
    {
        var stages = process.Stages.ToList();
        ViewBag.Stages = stages;
        var files = new List<AttachmentViewModel<Guid>>();

        foreach (var stage in stages)
        {
            //***Some code***
            files.AddRange(items);
        }

        return PartialView("_AttachmentsPartial", files);
    }

    return PartialView("_AttachmentsPartial");
}

我的观点:

@model List<AttachmentViewModel<Guid>>

@using PM.Models;
@using PM.Resources.Strings;
@using PM.Utils;

@{
    List<Stages> stages = ViewBag.Stages; // This crashes here
}

早些时候,它与StackOverflowException崩溃但现在没有输出任何内容,只需完成应用 我尝试调试此代码,当我尝试访问ViewBag.Stages时它崩溃了。即使我尝试仅在调试器中创建它。

2 个答案:

答案 0 :(得分:1)

这是一个我经常用来在加载部分等时发现错误的函数,这些错误似乎没有任何痕迹。

在Global.asax.cs中创建:

 protected void Application_Error()
 {
    Exception exception = Server.GetLastError();

    Response.Clear();
    Server.ClearError();

    HttpException ex = exception as HttpException;

    var test = ex.GetHttpCode();
}

我只是在异常上放置了一个断点,并在它抛出时将鼠标悬停在它上面。它通常告诉我出了什么问题。

答案 1 :(得分:1)

您尝试将数组分配到列表?

List<Stages> stages = ViewBag.Stages;

成功

Stages[] stages = ViewBag.Stages;