2017-11-10 152 views
0

我有一個包含報告的項目。在休息閱讀了最佳做法,它看起來像我應該有類似下面列出了所有的報告頁面的URL:在ASP.NET Core REST URL中包含參數

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

要查看特定報告,我會使用類似下面的鏈接:

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?)和可能的工作,但似乎並不像推薦的網址。

+0

問題是您正在使用Razor頁面。除此之外,由於路由是基於文件系統的,因此您無法真正實現此類路由。這只是Razor Pages吸引衆多,許多原因之一。去核心MVC,不要回頭。 –

回答

1

您可以在* .cshtml文件中的@page指令旁邊定義自定義剃鬚刀頁面路由。

@page "{pid}/{rid}" 

因此,當您的剃鬚刀頁面爲Projects.cshtml時,您將擁有以下URL。

/Projects/23/2 

您還可以在您的URL中添加靜態信息。現在

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

您的網址將

/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