एक तरह से यह करने के लिए
string cleanString = originalString.ToLower().Replace(" ", "-"); // ToLower() on the string thenreplaces spaces with hyphens
cleanString = Regex.Replace(cleanString, @"[^a-zA-Z0-9\/_|+ -]", ""); // removes all non-alphanumerics/underscore/hyphens
अब आप पास कर सकते हैं अपने स्ट्रिंग पर पीछा कर रहा है cleanString
ActoinLink में (शीर्षक, नाम आदि के लिए)/Url.Action पैरामीटर और यह बहुत अच्छा काम करेगा।
पैटर्न से http://snipplr.com/view/18414/string-to-clean-url-generator/
लिया गया था मैं Regex तर्ज पर% नहीं 100 हूँ, अगर कुछ Regex नायक झंकार और एक बेहतर एक है कि बहुत अच्छा होगा की पेशकश कर सकते हैं। रेगेक्स का परीक्षण करने से, यह रिक्त स्थान से मेल नहीं खाता है, लेकिन यह कोई समस्या नहीं होनी चाहिए क्योंकि पहली पंक्ति हाइफ़न के साथ सभी रिक्त स्थान को प्रतिस्थापित करती है।
अद्यतन:
इस कोड का उपयोग करने के लिए आपको अतिरिक्त पैरामीटर स्वीकार करने के लिए अपने मार्गों सेटअप की जरूरत है।
हम एक उदाहरण के रूप में एक ब्लॉग लेख शीर्षक का उपयोग करेंगे।
routes.MapRoute(
"", // Route name
"View/{ID}/{Title}", // URL with parameters
new { controller = "Articles", action = "View"} // Parameter defaults
);
अपने ASP.NET MVC दृश्य में, आप उसके बाद निम्न कर सकते हैं: पिछले उदाहरण में
<%= Html.ActionLink("View Article", "View", "Articles", new { ID = article.ID, Title = Html.SanitizeTitle(article.Title) }, null) %>
, मैं एक HTML helper रूप SanitizeTitle
का उपयोग करें।
public static SanitizeTitle(this HtmlHelper html, string str)
{
string cleanString = originalString.ToLower().Replace(" ", "-"); // ToLower() on the string thenreplaces spaces with hyphens
cleanString = Regex.Replace(cleanString, @"[^a-zA-Z0-9\/_|+ -]", ""); // removes all non-alphanumerics/underscore/hyphens
return cleanString;
}
मुझे कोई regex नायक हूँ के साथ सभी गैर शब्द अक्षर में बदलें लेकिन मुझे लगता है कि यह बेहतर होगा: इनपुट = Regex.Replace (इनपुट, @ "[| \\ /]", "-"); // 0- इनपुट = Regex.Replace (इनपुट, @ "[^ a-zA-Z0-9 -_। ~]", "") के साथ "ब्रेकिंग" वर्ण बदलें। // इनपुट = इनपुट.Trim (नया [] {'-', '_', '।', '~'} के साथ शेष गैर-सुरक्षित (आरएफसी 3 9 86) वर्णों को बदलें।) ToLower(); // ट्रिम अग्रणी या पिछला गैर-अल्फान्यूमेरिक वर्ण और लोअरकेस – JohannesH
बकवास में कनवर्ट करें ... टिप्पणियों में कोई लाइन-ब्रेक नहीं। – JohannesH