如何在VIEW MVC3 Razor中显示webforms页面.aspx

Dev*_*_29 6 webforms reporting-services asp.net-mvc-3

我的项目是在MVC3 Razor Tech中开发的.我的母版页和内容页是使用Razor MVC3开发的.我想在我的项目中显示SSRS报告生成器.我在博客中搜索并了解到我们无法在MVC3 Razor中显示SSRS报告.由于我们可以'webform'在MVC3 中使用,我们可以显示报告.

问题:在我的项目中,主页面和内容页面都是用Razor开发的,.cshtml因为访问.aspx很困难.如果我错了,请更正我.

要求:请帮我在'VIEW'MVC3 Razor framwork.ie中显示webforms.我的项目登陆页面是webform.在该网页表单页面中,我需要显示SSRS报告

Mat*_*ate 9

我必须这样做,所以我为我工作:

假设您有一个名为Summary的控制器.对于此实现,您无需添加或修改任何操作.

然后,正如您告诉我的那样,在视图文件夹中添加名为"SkillReport.aspx"的文件

 Views/Summary/SkillReport.aspx
Run Code Online (Sandbox Code Playgroud)

(最初留在空白的SkillReport.aspx或只是添加一些文字,如"技能报告")

在Global.asax中:

    public static void RegisterRoutes(RouteCollection routes)
    {
       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

       routes.MapPageRoute("Report", "Report/{rptController}/{rptName}", "~/Views/{rptController}/{rptName}.aspx");
       ...
    }
Run Code Online (Sandbox Code Playgroud)

**** - >我附上了我的解决方案资源管理器的快照 在此输入图像描述 我的routes.Mappageroute代码是" routes.MapPageRoute("Report","Report/Summary","〜/ Views/Summary/SkillReport.aspx"); "请更改mapPageRoute以获取上述文件夹结构.**< -

{}中包含的值是占位符.您不得在此处提供控制器的名称或报告.收到请求时,此路由通过将后缀"rptController"添加到URL中的控制器值来确定要调用的控制器,以确定将处理请求的控制器的类型名称.URL中的rptName值确定要调用的WebForm.aspx.

假设您需要其他两个报告.

  1. 摘要控制器中,并报告名称FullNames
  2. 在名为Product的控制器中,并且报告名称列表.

使用这些参数可以避免为每个报告创建路径.

routes.MapPageRoute("Report", "Report/{rptController}/{rptName}", "~/Views/{rptController}/{rptName}.aspx");


http://localhost/Report/Summary/SkillReport  --> /Views/Summary/SkillReport.aspx
http://localhost/Report/Summary/FullNames    --> /Views/Summary/FullNames.aspx
http://localhost/Report/Product/List         --> /Views/Product/List.aspx
Run Code Online (Sandbox Code Playgroud)

在这条路线上我们补充说:

  1. "报告"是这条路线的名称,你可以把任何其他

  2. "Report/{rptController}/{rptName} ":这是用于标识何时调用Report-WebForm的模式URL,"Report"用作"key", {rptController}是控制器的名称.将为rptController分配Controller名称.在这种情况下,SummaryrptNameSkillReport

  3. "〜/ Views/{rptController}/{rptName} .aspx"是物理路径.当使用此路由与Summary控制器,并调用SkillReport时,这将调用Views/Summary/SkillReport .aspx

路由文档:http://msdn.microsoft.com/en-us/library/cc668201(v = vs.100).aspx #url_patterns

此时,您可以验证是否可以使用以下命令访问开发环境中的SkillReport.aspx:

http://localhost/Report/Summary/SkillReport  
Run Code Online (Sandbox Code Playgroud)

或者也许在某个特定的港口......就像

http://localhost:1057/Report/Summary/SkillReport  
Run Code Online (Sandbox Code Playgroud)

最后,SkillReport.aspx(像这样......检查ProcessingMode ......)

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SkillReport.aspx.cs" Inherits="XXX.SkillReport" %>

    <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>



    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <meta http-equiv="X-UA-Compatible" content="IE=100"/>
    </head>
    <body>
        <form id="frmRpt" runat="server">
        <div>
            <asp:ScriptManager ID="sm" runat="server">
            </asp:ScriptManager>
            <rsweb:ReportViewer ID="rpt" runat="server" Width="100%" Height="90%" AsyncRendering="false" ProcessingMode="Local" ShowRefreshButton="false">
            </rsweb:ReportViewer>
        </div>
        </form>
    </body>
    </html>    
Run Code Online (Sandbox Code Playgroud)

有这个标签

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
Run Code Online (Sandbox Code Playgroud)

你在Safari和其他浏览器中实现了这个节目.

要从VIEW(.cshtml)访问报告,需要添加链接.即:

<a href="/Report/Summary/SkillReport" >Show My Report :) </a>  
Run Code Online (Sandbox Code Playgroud)

作为最后一条评论,我建议在创建SkillReport.aspx后输入" 设计模式 "并从工具箱中拖动报告的控件.这将自动在web.config中注册所需的值