एक एएसपी.नेट एमवीसी (बीटा) साइट पर जो मैं विकसित कर रहा हूं कभी-कभी एक्शनलिंक पर कॉल करता है, मुझे क्वेरीिंग स्ट्रिंग वाले यूआरएल पर वापस आ जाएगा। मैंने इस व्यवहार को उत्पन्न करने वाली परिस्थितियों को अलग कर दिया है, लेकिन मुझे अभी भी समझ में नहीं आता है कि क्यों, एक स्वच्छ यूआरएल बनाने के बजाय, यह एक क्वेरी स्ट्रिंग पैरामीटर का उपयोग करने का फैसला करता है। मुझे पता है कि कार्यात्मक रूप से वे वही हैं, लेकिन यूआरएल की स्थिरता (और उपस्थिति) के लिए यह वही नहीं है जो मैं चाहता हूं।क्यों मेरे एएसपी.नेट एमवीसी मार्ग में क्वेरी स्ट्रिंग?
routes.MapRoute(
"Photo Gallery Shortcut",
"group/{groupname}",
new { controller = "Photos", action = "All", Id = "" });
routes.MapRoute(
"Tagged Photos", //since the Tagged action takes an extra parameter, put it first
"group/{groupname}/Photos/Tagged/{tagname}/{sortby}",
new { controller = "Photos", action = "Tagged", Id = "", SortBy = "" });
routes.MapRoute(
"Photo Gallery", //since the Gallery's defualt action is "All" not "Index" its listed seperatly
"group/{groupname}/Photos/{action}/{sortby}",
new { controller = "Photos", action = "All", Id = "", SortBy = "" });
routes.MapRoute(
"Group", //<-- "Group" Category defined above
"group/{groupname}/{controller}/{action}/{id}",
new {controller = "Photos", action = "Index", Id = ""});
अब समस्या केवल तब होता है जब मैं के माध्यम से नाम "टैग तस्वीरें" दृश्य मार्ग द्वारा वर्णित तलाश में हूं और निष्पादित ActionLink:
यहाँ मेरी रास्ते हैं
Html.ActionLink<PhotosController>(p => p.All((string)ViewData["group"], ""), "Home")
कौन सा यूआरएल का उत्पादन करता है:
http://domain/group/GROUPNAME?sortBy=
किसी अन्य दृश्य से उत्पादित यूआरएल है:
http://domain/group/GROUPNAME
मैंने फिल के ASP.NET Routing Debugger को खींच लिया है, और सबकुछ क्रम में दिखाई देता है। यह मुझे स्टंप कर दिया है। कोई विचार?
आह, मैंने अनदेखा किया कि रूट डीबगर में क्वेरी स्ट्रिंग यूआरएल उस पहले मार्ग को निष्पादित कर रहा था। SortBy = "" को उस पहले रूट के डिफ़ॉल्ट में जोड़ना इस मामले में हल करता है, लेकिन क्या मुझे एक ही समस्या नहीं होगी यदि मैं बाद में कुछ विशिष्ट द्वारा सॉर्ट करने का प्रयास करता हूं? क्या मैं बस उस पहले मार्ग को हटा दूं? –
जब आप कोई अन्य प्रकार निर्दिष्ट करते हैं, तो sortBy = blah querystring param जोड़ा जाएगा। – CVertex