【问题标题】:URL rewriting in asp.net MVC 4asp.net MVC 4 中的 URL 重写
【发布时间】:2015-06-08 10:33:26
【问题描述】:

我想将我的应用网址设为http://domain.com/product/product-name....

如果我传递 productid 并且可以在我的 url 中获取 productname,是否有可能?

【问题讨论】:

  • 我不想对此投反对票,但这是 asp mvc 中非常常见的过程,网上关于此的文档已经足够了。

标签: asp.net-mvc asp.net-mvc-4 url-rewriting


【解决方案1】:

URL Rewriting 是通过将 URL 重写为 看起来像另一个 URL 来“伪造” URL 的做法。它在一个方向上这样做。这意味着它没有内置方法来生成在 UI 上使用的 URL。

.NET Routing 是 MVC 应用程序通常使用的。这是从 URL 到一组路由值和/或一组路由值到 URL 的真实的,而不是伪造的双向映射。这意味着您可以使用 HTML 帮助器(例如 ActionLink)轻松生成在应用程序中使用的 URL,因此这是在应用程序中构建自定义 URL 的推荐和首选方法。

有时会同时使用这两种技术,但 URL 重写通常仅用于在编译后的应用程序之外进行有意义的更改,例如将应用程序嵌套在另一个应用程序中或以单向方式放置时旧 URL 的 301 重定向。

要回答您的问题,可以,但应该使用 .NET 路由,而不是 URL 重写。要使用这样的名称,您需要名称和 ID 之间的映射。有几种方法可以做到这一点:

  1. 通过使用名称和包含相关 ID 的路由值的静态路由段,在您的路由配置中进行名称-ID 映射。仅当您的 URL 不需要在应用程序中动态更改时,此方法才有效。
  2. 在缓存的字典对象中使用名称-ID 映射。通过覆盖GetRouteDataGetVirtualPath 方法,使用custom RouteBase 实现在每个方向上进行映射。

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 2011-08-24
    • 2018-10-11
    • 2011-02-08
    • 2011-02-16
    • 2011-12-22
    相关资源
    最近更新 更多