काफी सरल है, ऐसा प्रतीत होता है, लेकिन यह वास्तव में इस तथ्य के कारण नहीं है कि दृश्य संभवत: मॉडल और नियंत्रक के माध्यम से आपको पता नहीं चला सकता है। भले ही, यह एक समस्या है जिसके लिए समाधान की आवश्यकता है:लॉगिन फॉर्म के लिंक के लिए मैं एक वापसी यूआरएल कैसे निर्दिष्ट करूं?
मेरे पास एक लॉगिन लिंक है, जो उपयोगकर्ता को उपयोगकर्ता नाम और पासवर्ड दर्ज करने के लिए एक फॉर्म पर ले जाता है। जब उपयोगकर्ता "सबमिट" पर क्लिक करता है, तो मैं उस पृष्ठ पर रीडायरेक्ट करना चाहता हूं जिसे वह देख रहा था। ऐसा करने का सबसे आसान तरीका वर्तमान पृष्ठ पर यूआरएल को क्वेरीस्ट्रिंग (...?returnUrl=...
) के रूप में निर्दिष्ट करना प्रतीत होता है और बाकी सब कुछ पहले से ही बनाया गया है।
लेकिन लिंक को प्रस्तुत करते समय मुझे अपने दृश्य से यह यूआरएल कहां मिल सकता है? मैं स्वाभाविक रूप से एक RedirectToActionResult का उपयोग नहीं कर सकता क्योंकि मैं वास्तव में उपयोगकर्ता को स्थानांतरित नहीं करना चाहता - केवल एक लिंक में यूआरएल प्रस्तुत करता हूं। कैसे?
संपादित करें:
मैं अब इस प्रश्न पर एक इनाम शुरू कर दिया है, और इसलिए मैं भी मेरी जरूरतों को स्पष्ट करने का उचित समझें।
मेरे पास मेरे साझा फ़ोल्डर में LoginCascrol नामक UserControl है। इसमें, मैं लॉगिन फॉर्म में एक एक्शनलिंक प्रस्तुत करता हूं, और इसे मेरे मास्टर पेज पर पाद लेख में शामिल किया गया है। क्या मैं करना चाहते है निम्नलिखित:
जब ActionLink प्रदान की गई है, क्वेरी स्ट्रिंग returnUrl
दृश्य है कि वर्तमान में गाया जा रहा के लिए एक मार्ग के साथ जोड़ दिया जाता है। यदि यह पूरा हो जाता है, तो उपयोगकर्ता को उस पृष्ठ पर वापस ले जाया जाएगा जिसे वह कार्यक्षमता के साथ सफल लॉगिन के बाद देख रहा था जो पहले से ही एएसपी.नेट एमवीसी फ्रेमवर्क में बना है।
कारण पिछले उत्तरों पर्याप्त नहीं हैं कारण मुख्य रूप से उन्होंने को वर्तमान दृश्य पर रूट यूआरएल बनाने का तरीका प्रदान नहीं किया है। मुझे पता है कि क्वेरीस्ट्रिंग को कैसे जोड़ना है, लेकिन मुझे नहीं पता कि उस स्ट्रिंग में क्या रखा जाए।
उत्तर के रूप में उत्तर को चिह्नित करने के लिए, मैं मास्टरपेज में उपयोगकर्ता नियंत्रण से वर्तमान में दिखाए गए दृश्य के मार्ग को दोबारा बनाने का एक तरीका चाहता हूं।
मेरे पास एक्शनलिंक सहायक विधि का कोई सामान्य संस्करण नहीं था (क्या मुझे एक एमवीसी आरसी रीफ्रेश प्रोजेक्ट में होना चाहिए? क्या मुझे कुछ याद आ रहा है?) लेकिन यह काम करता है: <% = HTML.ActionLink ("लॉग ऑन", "लॉग इन", नया { नियंत्रक = "उपयोगकर्ता", returnUrl = HttpContext.Current.Request.RawUrl})%> –
स्पष्टीकरण - यदि आप इस कोड में पोस्ट संपादित करते हैं, तो आपको उपहार मिलेंगे =) –