首页 > 解决方案 > 尝试从在 WebForms 应用程序中运行的 MVC 5 中的控制器返回视图时出现 ThreadAbortException

问题描述

我在现有的 WebForms 应用程序中添加了一个控制器和几个视图。据我所知,所有必需的库都已添加为引用,以便使用 MVC。我创建了一个控制器和几个视图,并创建了一个到控制器上的默认操作的路由。到目前为止一切顺利 - 控制器中的操作按预期调用。问题是当我从操作方法返回视图时,我得到一个 ThreadAbortException。如果我返回 null,我会得到一个空白页,没有例外。如果我重定向到 WebForms 应用程序中的另一个页面,它会加载得很好。只有当我返回一个视图时,我才会得到异常。下面是一些简单的示例代码:

        public ActionResult Index()
    {
        // FAILS
        return this.View("Empty");

        // SUCCEEDS
        //return null;

        // SUCCEEDS
        //var num = db.Banners.Count();

        //if (num == 0)
        //{
        //      FAILS
        //    return this.View("Empty");
        //
        //      SUCCEEDS
        //    return Redirect("~/Default.aspx");
        //}
        //else
        //{
        //      FAILS
        //    return View(db.Banners.ToList());
        //}
    }

这是空视图:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Empty</title>
</head>
<body>
    <div> 
    </div>
</body>
</html>

任何想法为什么会发生这种情况?

此外,为了按时交付我的任务,我需要找到一种从 WebForms 应用程序运行新页面(视图)的方法。有没有办法从 WebForms 应用程序打开新选项卡或窗口并启动不同的 Web 应用程序(MVC 应用程序或 Razor 页面应用程序)?

标签: asp.netasp.net-mvcrazor

解决方案


推荐阅读