在浏览网址上更正可选的路由参数

时间:2014-10-30 09:04:51

标签: asp.net asp.net-mvc-3 url-routing

我正在开发电子商务项目(Asp.Net Mvc3)。我的产品和类别路线如下所述

routes.MapLocalizedRoute(
  "Product",
  "p/{productId}/{SeName}",
   new { controller = "Catalog", action = "Product", SeName = UrlParameter.Optional },
);

routes.MapLocalizedRoute(
  "Product", 
  "c/{categoryId}/{SeName}",
  new { controller = "Catalog", action = "Category", SeName = UrlParameter.Optional },
);

当使用浏览网址http://mysite.in/p/123/my-product时,它会重定向到正确的产品,同样的事情也会发生在类别中。

现在,当我提供错误的SeName或只是从网址中删除SeName时,它会重定向到正确的产品/类别,这是正确的。但我想要附加有效的SeName,即如果url中的错误或没有SeName,则应在url中添加repsective product / category。以上功能对网站搜索引擎优化是否有任何影响。

Stackoverflow也是这样想的,尽管SeName是可选的,如果没有提供,它会附加seName。

如果有人处理同样的问题,请回复。

1 个答案:

答案 0 :(得分:1)

这被称为'slug',通常在动作过滤器中处理。 Phil Haack有一篇很好的文章Manipulating Action Method Parameters,详细解释了它。基本概念是处理过滤器OnActionExecuting方法以提取ID参数的路由值,然后从数据库中查找相应的名称并将该值添加到Name参数。