c# - Routing table for multilingual web site -
मैं एक बहुभाषी ASP.NET MVC साइट बनाने की कोशिश कर रहा हूं।
www.mysite.com/home
-> अंग्रेजी और कॉल नियंत्रक के सूचकांक कार्रवाई होना चाहिए।
www.mysite.com/test
-> टेस्ट नियंत्रक की अंग्रेजी और कॉल इंडेक्स एक्शन होना चाहिए
www.mysite.com/es/home
-> स्पैनिश और होम नियंत्रक की कॉल सूचकित कार्रवाई होनी चाहिए
www.mysite.com/es/test
-> स्पैनिश और टेस्ट नियंत्रक की कॉल इंडेक्स कार्रवाई होनी चाहिए
यहां बताया गया है कि मेरी रूटिंग तालिका कैसी दिखती है। मुझे जो पसंद नहीं है वह है कि मुझे एक ही चीज़ के लिए 2 प्रविष्टियाँ होने की आवश्यकता है।
मार्गों। MapRoute (नाम: "नियंत्रक", url: "{controller}", डिफ़ॉल्ट: नया {Lang = "en", नियंत्रक = "होम", एक्शन = "इंडेक्स"}); मार्गों:। ("Multilang-controller" url: "{lang} / {controller}", डिफ़ॉल्ट: नया {lang = "en", नियंत्रक = "होम", कार्रवाई = "सूचकांक"}, बाधाएं: नया {Lang = "en | es | de | fr"});
मैं ऐसा कुछ करने के लिए सोच रहा था
मार्ग। MapRoute (नाम: "नियंत्रक", url: "{lang} \ {controller} ", डिफ़ॉल्ट: नया {lang =" en ", नियंत्रक =" होम ", एक्शन =" इंडेक्स "}, बाधाएं: नया {lang =" en | es | de | fr "});
लेकिन यह काम नहीं कर रहा है क्योंकि जब मैं www.mysite.com/test
को कॉल करता हूँ test
को लांग
और चूंकि यह बाधा के खिलाफ है, यह 404 फेंकता है।
प्रत्येक मामले के लिए 2 रिकॉर्ड होने के बजाय ऐसा करने के लिए अधिक सुरुचिपूर्ण तरीका होना चाहिए।
आपको QueryStringRequestCultureProvider
का उपयोग करने की आवश्यकता हो सकती है। सार्वजनिक शून्य कॉन्फ़िगर करें (IApplicationBuilder ऐप, ...)
कॉल
ऐप। यूज़रआरक्वेंस लोकेशन (...);
अनुरोध लोकेशन ऑप्शन का एक उदाहरण दे रहा है।
इस विकल्प में मौजूदा QueryStringRequestCultureProvider
उदाहरण ढूंढें और इसके QueryStringKey / UIQueryStringKey < / कोड> गुणों को आपके लिए आवश्यक मानों के अनुसार चूक 'संस्कृति' और 'उइ-संस्कृति' हैं
यदि आप वैल्यू नहीं बदलते हैं तो आपका यूआरएल इस तरह दिखेगा:
http: // localhost: 5000 /? Culture = fr-fr & amp; ui-culture = Fr-BE
यदि, आपको क्वेरी स्ट्रिंग पैरामीटर के बजाय एक URL सेगमेंट की आवश्यकता है, तो आपको परिदृश्य को संभालने के लिए अपने स्वयं के ओविन मिडलवेयर लागू करना होगा ।
हुड के तहत "क्या होता है" यह है: प्रदाता अनुरोध यूआरएल की क्वेरी पार्ट का निरीक्षण करता है और अगर इसमें पैरामीटर शामिल हैं तो यह संबंधित संस्कृति (ओं) को निर्धारित करता है यह थोड़ी सरलीकृत है वस्तुतः अधिरोहित निर्धारित करेंप्रदाताधारक ऋषि ()
अनुरोधित संस्कृति (ओं) को निर्धारित करता है और अनुरोध संसाधित करने के लिए ProviderCultureResult
देता है। इसकी इच्छा () पद्धति में यह प्रदाता संस्कृति रिजल्ट
प्राप्त करता है और CultureInfo.CurrentCulture
और CultureInfo.CurrentUICulture
सेट करता है। तब यूआरएल आगे बढ़ गया है और एमवीसी तक पहुंच गया है।
ऐसा होने के बाद, शायद आपको अधिक से अधिक समाधानों का उपयोग करना बेहतर लगेगा, जो बॉक्स के बाहर निकलते हैं, और केवल तभी कुछ उपलब्ध नहीं है, जब आप खुद को लागू कर सकते हैं।
यहां पर विषय पर अधिक:
Comments
Post a Comment