私はそれをしなければならなかったので、私は私のために働きました:
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");
...
}
****--> ソリューション エクスプローラーのスナップショットを添付しました
My routes.Mappageroute code is " routes.MapPageRoute("Report", "Report/Summary", "~/Views/Summary/SkillReport.aspx"); " 上記のフォルダ構造の mapPageRoute を変更してください。** <--
{}で囲まれた値はプレースホルダーです。そこにコントローラーまたはレポートの名前を付けてはなりません。リクエストを受信すると、このルートは URL のコントローラの値にサフィックス「rptController」を追加して、リクエストを処理するコントローラのタイプ名を決定することにより、呼び出すコントローラを決定します。URLのrptName値によって、呼び出すWebForm.aspxが決まります。
他に 2 つのレポートが必要だとします。
- サマリーコントローラーで、レポート名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/ {rptController} / {rptName} " : これは、Report-WebForm を呼び出すタイミングを識別するためのパターン URL です。"Report" は "キー" として機能し、
{rptController}はコントローラーの名前です。rptController にはコントローラー名が割り当てられます。この場合、SkillReportを使用したSummaryとrptName
「~/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) からレポートにアクセスするには、リンクを追加する必要があります。すなわち:
<a href="/Report/Summary/SkillReport" >Show My Report :) </a>
最後のコメントとして、SkillReport.aspx を作成した後、「デザイン モード」に入り、レポートのコントロールをツールボックスからドラッグすることをお勧めします。これにより、必要な値がweb.configに自動的に登録されます