2010-09-01 178 views
10

我试图做类似计算器ASP.NET MVC路由/ SEO友好的URL

采取从计算器例如链接:

Hidden Features of C#?

如果删除了最后一部分 ( Hidden Features of C#?) 它仍然返回相同的结果。

对于我在Global.asax中路由我试着做一些像 “{行动}/{ID}/{TITLE}”

在我的网页,这是我的链接:

<%= Html.ActionLink(video.Title, "Details", "Videos", new {id = video.ID, title = video.Title.Replace(" ", "-")}, null) %> 

这做什么,我希望它在大多数情况下做不同的是它在“?标题=等等,夸夸其谈

我想抛出的ID后,说“ID /夸夸其谈,胡说

我的问题是什么? (除了作为noob)

+0

你可以发布你的global.asax.cs中的所有路线吗?也许另一个匹配第一... – Peter 2010-09-01 16:29:47

+0

@Peter确实是这样的情况 – 2010-09-01 16:47:44

+1

+1“我的问题是什么?(除了是一个noob)” – Jake 2010-09-01 17:43:40

回答

4

该路由看起来应该与ActionLink的调用一起工作,所以这是一个猜测。您是否在默认路线之后注册您的“{动作}/{编号}/{标题}”路线?如果是这样,默认路由将首先匹配,并将标题值放在查询字符串中,因为它不会出现在路径中。如果您在{controller}/{action}/{id}默认之前注册您的自定义路线,它应该可以工作。

+0

它是在默认路由之前注册,但是,你确实指向我在正确的方向。它实际上确实归结为注册路线的实际顺序。 谢谢 – 2010-09-01 16:38:36

9

我写了这一段时间回来一篇博客文章,并认为这可能是有益的:

http://mynameiscoffey.com/2010/12/19/seo-friendly-urls-in-asp-net-mvc/

基本上你需要在你的行动,以检查正确的SEO友好的标题的存在,当你操作正在执行,如果它没有找到它,请发回重定向回浏览器到正确的适合搜索引擎优化的URL。

+0

+1非常好的博客文章,相当有帮助! – 2013-05-06 12:18:37

+0

伟大的职位。我可以建议在'SeoName'方法的末尾加上'.Trim(' - ')'来阻止“One(Two)”变成“one-two-”。 – 2013-05-16 09:50:20

+0

完美!特别是对于我从webform迁移到mvc。 – 2016-10-13 22:44:30