[英]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
”,更重要的是,保留我的StartController
和UploadController
代碼,因為我不需要BuildController中的大量代碼。
我將切換到屬性路由。 您將必須將ActionLink方法更改為RouteLink方法,但其工作方式相同。
添加屬性
[Route("build/start/{id:int}", Name = "WizardStep1")]
每種控制器方法(適當更改路線)。
要生成鏈接,請使用RouteLink:
@Html.RouteLink("WizardStep1", ...)
用其他代碼替換...,您需要設置URL屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.