簡體   English   中英

創建自定義路由層次結構ASP.NET MVC 5

[英]Creating a custom route hierarchy ASP.NET MVC 5

我當前的網址路由是:

website.com/start/id
website.com/upload/id

這些路線是向導步驟。 我的控制器名為StartController, UploadController ,我的View結構為StartController, UploadController ~Views/Start/Index.cshtml, ~/Views/Upload/Index.cshtml

客戶端已要求他希望url結構為:

website.com/build/start/id
website.com/build/upload/id

願望:

  • 我不想使用“ 虛假網址 ”,因為我想盡可能使用@ Html.ActionLink和@ Url.Action呈現我的網址,以便以后可以重命名控制器和控制器方法,並讓它們“連接” @ Html.ActionLink和@ Url.Action更新。

  • 我確實希望將所有方法都放在一個父級BuildContoller中,該父類引用一個嵌套的View文件夾結構,該文件夾的控制器方法可以重現以下視圖: return View("~/Views/Build/Start/Index.cshtml") 我希望能夠將View的物理結構映射/匹配到我的控制器命名約定,因此return View(); 在控制器方法中工作。

我的問題:

有沒有辦法我可以尊重上面的“願望”並實現此自定義網址結構,而不必創建同時包含StartController方法和UploadController方法的BuildController?

我可以輕松地創建BuildController或更改View文件夾和/或控制器的物理結構,但是我想尊重@Url.Action("Start", "Build") ,而不必在我的文件中手動編寫代碼“ build/start ”,更重要的是,保留我的StartControllerUploadController代碼,因為我不需要BuildController中的大量代碼。

我將切換到屬性路由。 您將必須將ActionLink方法更改為RouteLink方法,但其工作方式相同。

添加屬性

[Route("build/start/{id:int}", Name = "WizardStep1")]

每種控制器方法(適當更改路線)。

要生成鏈接,請使用RouteLink:

@Html.RouteLink("WizardStep1", ...)

用其他代碼替換...,您需要設置URL屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM