我有一个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教程所要求的,以实现我想要的。我知道重定向线在过去对大多数人都有效。我肯定在这里遗漏了一些东西。任何帮助将不胜感激!
谢谢, ħ
答案 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处理,因此您将收到“未找到”消息。