由于我们可以在MVC3中使用’webform’,我们可以显示报告.
问题:在我的项目中,主页面和内容页面都是用Razor .cshtml开发的.因为访问.aspx很困难.如果我错了,请更正我.
要求:请帮我在’VIEW’MVC3 Razor框架中显示webforms.我的项目登陆页面是webform.在该网页表单页面中,我需要显示SSRS报告
解决方法
假设您有一个名为Summary的控制器.
对于此实现,您无需添加或修改任何操作.
然后,正如您告诉我的那样,在视图文件夹中添加名为“SkillReport.aspx”的文件
Views/Summary/SkillReport.aspx
(最初留在空白的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"); ... }@H_404_24@ @H_404_24@
****–> I have attached the snapshot of my solution explorer
My routes.Mappageroute code is
“routes.MapPageRoute(“Report”,“Report/Summary”,“~/Views/Summary/SkillReport.aspx”);”
Please change the mapPageRoute for the above folder structure.** <–
{}中包含的值是占位符.您不得在此处提供控制器的名称或报告.收到请求时,此路由通过将后缀“rptController”添加到URL中的控制器值来确定要调用的控制器,以确定将处理请求的控制器的类型名称. URL中的rptName值确定要调用的WebForm.aspx.
假设您需要其他两个报告.
>在摘要控制器中,并报告名称FullNames
>在名为Product的控制器中,并报告名称列表.
使用这些参数可以避免为每个报告创建路径.
routes.MapPageRoute("Report","~/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
在这条路线上我们补充说:
>“报告”是这条路线的名称,你可以把任何其他
>“Report / {rptController} / {rptName}”:这是要识别的模式URL
何时调用Report-WebForm,“Report”作为“key”和
{rptController}是控制器的名称.将为rptController分配Controller名称.在这种情况下,Summary和rptName与SkillReport
>“〜/ Views / {rptController} / {rptName} .aspx”是物理的
路径.当使用此路由与摘要控制器,并调用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
或者也许在某个特定的港口……就像
http://localhost:1057/Report/Summary/SkillReport
最后,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>
有这个标签
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
你在Safari和其他浏览器中实现了这个节目.
要从VIEW(.cshtml)访问报告,需要添加链接.一世.即:
<a href="/Report/Summary/SkillReport" >Show My Report :) </a>
作为最后一条评论,我建议在创建SkillReport.aspx后输入“设计模式”并从工具箱中拖动报告的控件.这将自动在web.config中注册所需的值