带有MVC3的Crystal Reports Viewer

Tia*_*oso 9 crystal-reports asp.net-mvc-3

我正在构建一个ASP.NET MVC3 Web应用程序,我想使用水晶报表构建一些报表,并使用水晶报表查看器显示它们.我在网上搜索过,在MVC3网络应用程序中找不到任何可靠的方法.你有任何关于如何做的提示/想法吗?

Nic*_*els 5

如果你不介意一些黑客攻击它实际上很容易.(假设CR4VS2010)

首先将WebForms页面添加到项目中,然后将Crystal Reports查看器控件添加到其中.

验证它添加了对以下内容

CrystalDescisions.CrystalReports.Engine, CrystalDescisions.ReportSource, CrystalDescisions.Shared,和CrystalDescisions.Web.

然后将PageRoute添加到您的应用程序,从而导致新添加的页面.

最后,这是BLANK最大的痛苦,你需要让Crystal的Image Handler工作.有许多假想的方式,无论是在网络还是在SO,这些都没有真正为我工作所以我采取了欺骗行为:

public class CrystalImageHandlerController : Controller
{
    //
    // GET: /CrystalImageHandler.aspx

    public ActionResult Index()
    {
        return Content("");
    }

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {

        var handler = new CrystalDecisions.Web.CrystalImageHandler();
        var app = (HttpApplication)filterContext.RequestContext.HttpContext.GetService(typeof(HttpApplication));
        if (app == null) return;

        handler.ProcessRequest(app.Context);

    }
}
Run Code Online (Sandbox Code Playgroud)

将路径添加到此控制器作为/CrystalReportsImageHandler.aspx,这是CR期望它处理的位置.这也可以在区域中使用,只需根据需要更改处理程序和页面路径.

请记住,您将无法使用Razor布局.因此,您需要采用其他方法来获得视觉连续性.(我用IFrames)