如何在 VIEW MVC3 Razor 中显示 webforms 页面 .aspx
Posted
技术标签:
【中文标题】如何在 VIEW MVC3 Razor 中显示 webforms 页面 .aspx【英文标题】:How to show webforms page .aspx in VIEW MVC3 Razor 【发布时间】:2013-01-05 11:39:49 【问题描述】:我的项目是在 MVC3 Razor Tech 中开发的。我的母版页和内容页是使用 Razor MVC3 开发的。我想在我的项目中展示一个 s-s-rS 报表生成器。我在博客中搜索并得知我们无法在 MVC3 Razor 中显示 s-s-rS 报告。
由于我们可以在 MVC3 中使用'webform'
,因此我们可以显示报告。
问题:在我的项目中,母版页和内容页都是用 Razor .cshtml
开发的,因为访问 .aspx
很困难。如果我错了,请纠正我。
要求:请帮助我在'VIEW'
MVC3 Razor 框架中显示网络表单。即我的项目登录页面是webform
。在那个网络表单页面中,我需要显示 s-s-rS 报告
【问题讨论】:
【参考方案1】:我必须这样做,所以我为我工作:
假设您有一个名为 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");
...
****--> 我附上了我的解决方案资源管理器的快照 我的 routes.Mappageroute 代码是 "routes.MapPageRoute("Report", "Report/Summary", "~/Views/Summary/SkillReport.aspx");" 请更改上述文件夹结构的 mapPageRoute。**
中的值是占位符。您不得提供控制者的姓名或在那里报告。当收到请求时,此路由通过将后缀“rptController”添加到 URL 中的控制器值来确定要调用的控制器,以确定将处理请求的控制器的类型名称。 URL 中的 rptName 值决定调用哪个 WebForm.aspx。
假设您需要另外两个报告。
-
在 Summary 控制器中,并报告名称 FullNames
在名为 Product 的控制器中,报告名称为 List。
使用参数可以避免为每个报告创建路由。
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
在这条路线上我们添加了:
“report”是这条路由的名字,你可以放任何其他的
"Report/rptController/rptName" :这是要识别的模式 URL 何时调用您的 Report-WebForm,“报告”作为“键”和 rptController 是控制器的名称。 rptController 将被分配控制器名称。在这种情况下,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
或者也许在某个特定的港口……比如
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) 访问报告,需要添加一个链接。一世。 e. :
<a href="/Report/Summary/SkillReport" >Show My Report :) </a>
作为最后的评论,我建议在创建 SkillReport.aspx 后进入“设计模式”并从工具箱中拖动报告的控件。这会自动在web.config
中注册所需的值【讨论】:
希望对您有所帮助。随意添加任何其他问题/更改。 @Mate.. 谢谢.. 我在你的解决方案中更新了其他问题,格式为'-->问题 @Mate.. 我用快照更新了我的问题。请查看并发布答案。谢谢 我应该在控制器中添加什么?由于我收到此错误 - “'~/Views/Report/ReportView.aspx' 处的视图必须派生自 ViewPage、ViewPage答案 #1 很有用:
只要确保您的 MapRoutes 的顺序是正确的优先顺序:
例如:
public static void RegisterRoutes(RouteCollection routes)
routes.IgnoreRoute("resource.axd/*pathInfo");
routes.MapPageRoute(
routeName: "Report/",
routeUrl: "Report/rptController/rptName",
physicalFile: "~/Views/rptController/rptName.aspx"
);
routes.MapRoute(
name: "Default",
url: "controller/action/id",
defaults: new controller = "Home", action = "Index", id = UrlParameter.Optional
);
【讨论】:
【参考方案3】:虽然这不是推荐的做法,但它是可行的。我正在复制一个链接,向您展示如何在同一个项目中使用两个视图引擎。
http://weblogs.asp.net/gunnarpeipman/archive/2010/07/29/asp-net-mvc-3-using-multiple-view-engines-in-same-project.aspx
让我知道这是否适合你。
更新: 这也可能有帮助,另一个选项看起来像为您的 aspx 页面注册路由。
[*** 帖子] Aspx page in MVC3
【讨论】:
以上是关于如何在 VIEW MVC3 Razor 中显示 webforms 页面 .aspx的主要内容,如果未能解决你的问题,请参考以下文章