【问题标题】:asp.net mvc 3 url routing with name of news带有新闻名称的asp.net mvc 3 url路由
【发布时间】:2011-12-19 04:59:26
【问题描述】:

我有一个新闻网站。我通常使用参数来显示新闻或浏览器类别的新闻。例如:

http://mysite.com/News/Details/5

新闻是控制器 - 详情是行动 - 5 是新闻的 ID

现在我想将这条新闻的名称添加到 Url 中。例如:

http://mysite.com/News/Details/5/name-of-news/ 要么 http://mysite.com/News/name-of-news/

对于分页,我也使用参数 http://mysite.com/News?page=2

现在我想将我的网址显示为以下网址 http://mysite.com/News/Page1

我该怎么做这些事情?提前致谢。

【问题讨论】:

  • 分页通常(我也推荐)使用查询参数作为?page=1 完成,因为它几乎不显示 REST 请求中已知集合的过滤结果,随着时间的推移可能会有所不同。集合本身总是相同的,因此它在 REST 规范中有效。
  • 由于标题更改,也不需要仅按名称访问新闻。 ID 始终是静态的,但标题可以更改,这会使 Google 结果无效。使用 ID+title 时,使用 META 规范信息来区分同一页面内容的这些多方面也是明智的。
  • 感谢 Emmanuel N,我使用“/Product/Details/id”来展示我的产品。我也想在 Url 中添加产品名称,但是当我再添加一个 MapRoute 时,它​​总是运行消息的 MapRoute。我该如何解决这个问题? @Robert Koritnik:感谢您的 cmets。你有任何链接谈论这个吗?我想知道更多。谢谢。
  • 订单路由映射很重要,您应该将更具体的路由放在顶部。交换两个映射,看看你得到了什么。
  • @CamDiep:如果您想了解更多关于rel="canonical" 的信息,那么这个Google resource 是您最好的开始。顺便说一句:不是meta,而是link。很抱歉提供错误信息。

标签: asp.net-mvc-3 model-view-controller


【解决方案1】:

将新闻添加到您的操作所采用的参数列表中

        ActionResult Details(string id,string newsName){
        }
        //add a routing map 
         routes.MapRoute(
            "NewsDetailsIdName",                                             
            "{News}/{Details}/{id}/{newsName}",                           
            new { controller = "News", action = "Details"}  
         );

      or 
       //If news name is unique
       ActionResult Details(string newsName){
       }
      //Add a routing map
       routes.MapRoute(
            "NewsDetailsName",                                             
            "{News}/{Details}/{newsName}",                           
            new { controller = "News", action = "Details"}  
       );

对于分页,在您的新闻索引操作中添加路由图

        ActionResult Index(string page){
        }
        //Add a route
        routes.MapRoute(
            "NewsPage",                                             
            "{News}/{page}",                           
            new { controller = "News", action = "Index"}  
        );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多