[英]Custom Routing without changing the URL
我有一個控制器和一個視圖,當我傳遞ID時會返回書籍信息,例如:
/Content/Index?id=1
現在,我想將其作為對最終用戶的友好URL。 例如:Books / BookName(將ID 1映射到的書名)
所以我在global.asax中添加了一個路由值:
route.maprRoute(name:"custom", url:"Books/{bookname}",
defaults: new {controller = "bookMap", action ="index"}
在“ BookMap”控制器中,我獲得書名並將其轉換為ID(即1),並通過將ID作為參數傳遞給內容/索引進行redirectionToAction。 這很好。 但是問題是我想在重定向到視圖后保留友好名稱。 現在,它更改為Content / Index?id = 1。 但我想保留友好的URL,即Books / BookName。 我如何實現這一目標。
您可以使用HttpContext.RewritePath(url)
進行“內部”重定向,以保留外部URL。 使用它代替RedirectToAction
。 但是請注意,目前MVC框架尚未正確支持它,因此實現起來有點“棘手”。
您應該為此更改路線:
routes.MapRoute(
"Books",
"book/{bookname}/{bookid}",
new { controller = "book", action = "Index", bookname = UrlParameter.Optional },
new { id = @"\d+" }
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.