2011-12-19 60 views
1

我不知道如何去問這個,我也不知道它是什麼,所以我只會描述我想達到的目標。ASP.NET MVC/C# - 有效URL字符的字符串?

在數據庫中,一些文章稱號的淵源有空格:

my title with spaces 

但在URL,空間被其他字符,比如加號(+)替換或下劃線(_)

http://www.mydomain.com/mycontroller/myaction/my_title_with_spaces 

http://www.mydomain.com/mycontroller/myaction/my+title+with+spaces 

現在,你怎麼做,在C#?或者是否有任何幫助ASP.NET MVC中可以做這樣的事情?

假設我們實現了上述URL,是否存在兩個唯一標題在URL中相同的風險?請考慮這些標題:

Title's 
Titles 

分析後,他們成爲一樣

標題 標題

從數據庫中檢索的文章的時候,因爲我會得到兩個結果這將是一個問題,一個用於「標題」,一個用於「標題」。

+0

像'應該是唯一的字符。對於url問題,我不完全確定。我不完全瞭解你的問題。 – Det 2011-12-19 02:39:48

回答

1

我想實現這樣的功能,即:

1.當創建一個新的文章,基於標題的URL表示。

使用一個函數將標題轉換爲合適的表示。 例如,標題「這是一個示例」可能會生成類似「This_is_an_example」的內容。

這取決於你。您可以創建一個函數,用您定義的規則解析標題,或者如果它更適合您的問題,則使用現有的函數。

2.確保URL表示是唯一

如果它的將是一個ID,它必須是唯一的。因此,在創建新文章時,您必須查詢您的數據庫以獲取生成的URL表示。如果您從數據庫中獲取結果,則意味着新創建的文章與已創建的文章之一產生了相同的表示形式。添加一些東西,所以它仍然是唯一的。

這可能類似於「This_is_an_example_2」。在這種情況下,我們將「_2」添加到生成的表示的結尾,以便與已有的表示不同。再次,每次更改都必須確保此表示形式保持唯一。

3.保存在數據庫中創建ID,與文章數據

在數據庫中一定要保存「This_is_an_example」 ID,它涉及到的文章一起。也許甚至作爲表主鍵?

4。在數據庫中查詢正確的文章

現在,關於顯示網站訪問者正確的文章: 當訪問者請求後續的資源,例如:

http://www.mydomain.com/mycontroller/myaction/this_is_an_example_2 

提取標識的URL部分文章,在這種情況下是「this_is_an_example_2」。

當你有這個,你有在數據庫中的文章的標識符。因此,您可以使用「this_is_an_example_2」ID向數據庫查詢文章並向用戶顯示文章的內容。

這可能涉及一些URL重寫。不幸的是,我無法在asp.NET中爲你提供幫助。一些關於這個主題的搜索一定會幫助你。

+2

個人而言,我會避免創建獨特的名稱,只使用id的唯一性,但也增加了一個文本slu for SEO的目的。就像Stackoverflow所做的一樣。這個ID是唯一的,並且網址在最後沒有文本的情況下工作得很好。該文本是用於美容目的。 – 2011-12-19 03:20:32

+0

@SergioTapia,所以我應該避免把標題放在URL上? – dpp 2011-12-19 03:24:43

+0

我同意,這是一個方法問題。我從來沒有實現過這些功能,只是舉了個例子。 – 2011-12-19 03:26:19