2017-11-10 15 views
0

私はレポートを含むプロジェクトを持っています。私は、次のようなリンクを使用する特定のレポートを表示するにはASP.NETコアREST URL内にパラメータを含める

http://../Projects/23/Reports 

::私はすべてのレポートを表示するページに次のようなURLを持つべきであるように見える休憩ベストプラクティスにまで読ん

http://../Projects/23/Reports/2 

これらのリンクを運行することなくaspタグヘルパーで構築する方法をいくつか試しました。たとえば、次のようにデフォルトで

<a asp-page="/Projects/{pid}/Reports/{rid}" asp-route-pid="@item.ID" asp-route-rid="@report.ID" >View Report</a> 

はそれがASP-route-は*上のパラメータとして、それらの項目をタックますようになります(つまり、PID = 23 & RID = 2?)、それがうまくいくかもしれないが、それはように見えるしていません推奨URL

+0

問題は、Razor Pagesを使用していることです。とりわけ、ルートはファイルシステムに基づいているため、このようなルーティングスタイルは実際には実現できません。 Razor Pageが多くの、多くの、多くの理由のうちの1つに過ぎません。コアMVCに行って、振り返ってはいけません。 –

答えて

1

* .cshtmlファイルの@pageディレクティブの隣にカスタムレイザーページルーティングを定義することができます。

@page "{pid}/{rid}" 

これは、ひげ剃りページがProjects.cshtmlの場合、結果として次のURLになります。

/Projects/23/2 

また、URLに静的情報を追加することもできます。あなたは、私がこの記事では、現在の言語を定義するためにそれをやったかを確認することができ、すべてのかみそりページのルーティングを定義する場合

@page "{pid}/Reports/{rid}" 

今、あなたのURLは

/Projects/23/Reports/2 

になります。

Asp.net core Localization always returns english clulture

私はそれが役に立てば幸い。

+0

私はこれが正しい方向だと思うし、ファイルが同じディレクトリにある場合はおそらく動作します。サブフォルダにレポート/インデックスがあり、剃刀ページフォルダのルーティングが優先されるようです。たとえば、このタグヘルパーasp-page = "./ Reports/Index" asp-route-pid = "@ item.ID"とこのページディレクティブ@page "{pid}/Reports"は、このURLを生成します:.../Projects/Reports/130/Reports –

+0

ドットを削除してみます。 "./Reports/Index"ではなく "/ Reports/Index"を使用してください。 – pitaridis

関連する問題