我想提請注意路徑與查詢字符串編碼差異
MVC允許/鼓勵我們寫路徑(路線),可以更容易比查詢字符串記住。例如/Products.aspx?id=1
可以在MVC,是/Products/View/1
建築上,它也鼓勵,對SEO友好,這可能會或可能沒有必要像/Products/View/1/Coffee
如果名稱中有空格字符等數據,或必要的參數是一個包含空格字符的字符串,並且您將其包含在URL 路徑中,必須發生兩件事之一,因爲如果未經過編碼,「'不能留在Url路徑或查詢字符串參數中。
- 必須
UrlPathEncode()
字符串
- 首先你變換的空間字符串中,
- 然後調用
UrlPathEncode()
,因爲你可能有其他字符的編碼需要。
注:有URL編碼(意味着查詢字符串)和URL路徑編碼(意味着URL的路徑部分)之間有很大的區別
cats the musical
- >以UrlEncode - >cats+the+musical
- 這是在URL 路徑不有效
cats the musical
- > UrlPathEncode - >cats%20the%20musical
如果您正在追蹤;回到Web窗體VS MVC - /Products.aspx?name=Coffee+Beans
將被改寫爲/Products/View/Coffee%20Beans
因此,這讓我們在哪裏OP的問題開始。問:你如何得到搜索引擎優化和人類友好的網址?問:在UrlPathEncoding剩下的代碼之前,使用@Guffas代碼將自己代碼中的「」替換爲「 - 」。
在我工作過的網站中,當我們有一個用戶輸入的值只用於SEO(比如博客標題或類似的)時,我們通過將連續的空格合併爲一個單一的「 「例如
cats the musical
,否則便
cats-----the-----musical
成爲
cats-the-musical
不要忘記採取特殊字符 – Cleiton 2009-08-22 18:33:44
這些將被調用反正編碼被照顧的照顧,是不是他們? – 2009-08-22 18:34:40
只是一個註釋:Url路徑編碼與Url參數編碼不同。路徑中的「+」字符不是空格字符的正確替代,會導致問題。對於上面所做的SEO,將「」替換爲「 - 」是一種很好的技術。 MVC可以使路徑和查詢字符串參數可以互換,但它們不是。 – 2012-06-18 22:36:15