簡體   English   中英

自定義路由而不更改URL

[英]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.

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