मैं एक मार्ग है कि इस तरह दिखता है मिल गया है से बचने के लिए:ASP.NET MVC हो रही है सही ढंग से मार्गों में # (हैश/पाउंड) चरित्र
routes.MapRoute(
"BlogTags",
"Blog/Tags/{tag}",
new { controller = "Blog", action = "BrowseTag", viewRss = false }
);
और मैं एक URL ऐसा है कि मार्ग का उपयोग कर बनाने के लिए:
<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag),
new { action = "BrowseTag", tag = sortedTags[i].Tag })%>
हालांकि, जब एक # चरित्र (जैसे "सी #") के साथ एक टैग प्रयोग किया जाता है, मार्ग इंजन यह बच नहीं करता है, तो मैं एक यूआरएल है कि इस तरह दिखता है मिलती है:
<a href="/Blog/Tags/C#">C#</a>
मैं क्या जरूरत है # इसलिए बच गए है कि यह इस तरह दिखता है है:
<a href="/Blog/Tags/C%23">C#</a>
मैं इस तरह से पहले ही मार्ग में चला गया टैग पर एक Url.Encode कर रही है, की कोशिश की:
<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag),
new { action = "BrowseTag", tag = Url.Encode(sortedTags[i].Tag) })%>
<a href="/Blog/Tags/C%2523">C#</a>
कैसे मैं मेरे correc के लिए कि # चरित्र से बचने के लिए मार्ग इंजन प्राप्त कर सकते हैं: लेकिन है कि मार्ग इंजन डबल # (जो एक बुरी अनुरोध त्रुटि के साथ एक ASP.NET दुर्घटना का कारण बनता है)) से बचने के लिए बनाता है tly?
अग्रिम में आपकी सहायता के लिए धन्यवाद।
एक साइड नोट के रूप में, रूटिंग इंजन .NET 4 में तय किया गया है। यह सब कुछ पारित होने से बच जाएगा। यदि आप .NET 4 पर एक एमवीसी 2 ऐप चला रहे हैं, तो आप इस व्यवहार को स्वचालित रूप से चुनने में सक्षम होना चाहिए। – Levi