2010-09-01 125 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