不知道這是任何最佳的解決方案,但可以說我有網址這樣URL路由,從數據庫中更改ID的名稱
?id=2
將ID從數據庫中獲取,如何使其向顯示類似於
/<article_title_name>/
而不是id。
我一直在Google上搜索幾個小時,但我無法真正瞭解如何檢索文章名稱,但它仍然會顯示所選文章的目標身份,但網址會有所不同。
不確定我是否確實解釋過它._。
不知道這是任何最佳的解決方案,但可以說我有網址這樣URL路由,從數據庫中更改ID的名稱
?id=2
將ID從數據庫中獲取,如何使其向顯示類似於
/<article_title_name>/
而不是id。
我一直在Google上搜索幾個小時,但我無法真正瞭解如何檢索文章名稱,但它仍然會顯示所選文章的目標身份,但網址會有所不同。
不確定我是否確實解釋過它._。
這是我會怎麼做蛞蝓鏈接:
這應該讓你的生活,只是有點更容易,而不是扭轉魔法一些巫術到string
匹配到這篇文章的標題就是找到ID。
這裏去...
對模型的另一個屬性:
您Article
■創建您的數據庫表/模型的另一列/屬性,稱爲sluglink
什麼您選擇的,就像有意義的。
創建方法來生成它們:
當您保存到數據庫/存儲庫等你的文章,有一個可以創建鏈接,你和它存儲在該領域的功能。
這樣,你就沒有必要將魔術字符串反向工程化爲ID;你可以在數據庫/存儲等中找到匹配的slug,然後以這種方式返回。
有一個很棒的功能可以做到這一點(感謝this post) - 這篇文章給出了創建擴展方法時的方法;我剛剛適應它,並凝聚成爲簡潔起見一個功能,如果你不知道的擴展方法:
public string GenerateSlug(string postTitle)
{
var str = System.Text.Encoding.ASCII.GetString(System.Text.Encoding
.GetEncoding("Cyrillic")
.GetBytes(postTitle));
// invalid chars
str = Regex.Replace(str, @"[^a-z0-9\s-]", "");
// convert multiple spaces into one space
str = Regex.Replace(str, @"\s+", " ").Trim();
// cut and trim
str = str.Substring(0, str.Length <= 45 ? str.Length : 45).Trim();
str = Regex.Replace(str, @"\s", "-"); // hyphens
return str;
}
這是給你,你想把這個功能;我會讓你決定。
生成並存儲毛坯:
調用GenerateSlug
方法,通過你的PostTitle
或任何你想「slugify」;它會爲你的「slu」「返回一個漂亮的字符串。
然後該字符串存儲到數據庫/存儲等
檢索文章
很簡單,在所有誠實。
在您的路由表中,您可以將其轉換回您的WebForm,然後找到正確的文章。這裏有一個關於如何做到這一點的好鏈接:http://weblogs.asp.net/scottgu/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series
然後,以實際上相同的方式,您將GetArticleById(1234)
,從您的存儲庫/商店;我會創建另一種方法 - 猜猜看是什麼... GetArticleBySlug(heres-a-great-article)
- 或者再一次,你喜歡什麼。
最後
對於不純正的緣故,我還是不得不通過ID做選擇,如果你正在調試或任何情況下(節省打字了整個廢料,如果它是一個漫長的文章名)。
這應該讓你和運行,並用自己的方式在一定非常好看蛞蝓:)
希望這有助於!
此鏈接可能會有所幫助:) http://weblogs.asp.net/scottgu/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series - 適用於所有VS 2010向上和.NET 4.0及以上 –
我認爲你要找的是「slug」鏈接。有一個谷歌,你會得到噸的教程:) –
@GeoffJames謝謝,我無法找到我的自我> W <'開始閱讀' – Harugawa