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报告
我必须这样做,所以我为我工作:
假设您有一个名为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.
假设您需要其他两个报告.
使用这些参数可以避免为每个报告创建路径.
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)
在这条路线上我们补充说:
"报告"是这条路线的名称,你可以把任何其他
"Report/{rptController}/{rptName} ":这是用于标识何时调用Report-WebForm的模式URL,"Report"用作"key", {rptController}是控制器的名称.将为rptController分配Controller名称.在这种情况下,Summary和rptName与SkillReport
"〜/ 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中注册所需的值
| 归档时间: |
|
| 查看次数: |
9877 次 |
| 最近记录: |