如何从控制器(MVC 5框架)引导到.aspx Web表单?

时间:2014-06-25 13:04:55

标签: asp.net-mvc forms redirect

我有一个MVC项目,需要将SSRS报告作为应用程序的一部分。我之前没有这样做,所以我读了几篇博客,msdn页面等。但我还没有找到具体的解决方案。

这是我的控制器代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace AppName.Controllers
{
    public class ReportsController : Controller
    {
    //
    // GET: /Reports/
    public ActionResult Index()
    {
        var reportParameters = new Dictionary<string, string>();


        reportParameters.Add("First_Name", "TEST");

        Session["reportParameters"] = reportParameters;

        return Redirect("../Views/Reports/Index.aspx");
    }
}
}

最后一行&#39;返回重定向&#39;没有重定向到所需的页面,相反,它让我无法找到页面&#39;错误和显示的链接如下:

&#34; /本地主机:端口#/错误/ PageNotFound aspxerrorpath = /查看/报告/ Index.aspx的&#34;

我甚至尝试过RedirectRoute&#39;和&#39; RedirectToAction&#39;,但它们都不起作用。我正在使用Web表单而不是MVC视图,因为这是许多SSRS教程所要求的,以实现我想要的。我知道重定向线在过去对大多数人都有效。我肯定在这里遗漏了一些东西。任何帮助将不胜感激!

谢谢, ħ

1 个答案:

答案 0 :(得分:4)

只需进行一些调整就可以了:不使用相对URL,而是使用相对于应用程序根~的URL,如下所示:

return Redirect("~/Views/Reports/Index.aspx");

这将生成当前的重定向网址。

修改

在这种情况下可能存在第二个问题。 Views文件夹有点特殊,因为它有自己的web.config,这使得无法获取文件。因此,您还需要将.aspx页面移至其他位置并相应地更新Redirect

更准确地说,如果您查看web.config文件夹的Views,您会发现:

<system.web>
  <httpHandlers>
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
  </httpHandlers>

这意味着对该文件夹的任何请求都将使用HttpNotFoundHandler处理,因此您将收到“未找到”消息。