मैं अपने विचार एमवीसी 3 में दो भाषाओं के बीच स्विच करना चाहता हूं - पीएल और एन। मैंने व्यू-एन और पीएल में दो फ़ोल्डर्स बनाए हैं।विश्व स्तर पर मार्गों को कैसे बदला जाए?
routes.MapRoute(
"pl", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "PL", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
करने के लिए:: तो किसी भी साइट पर उपयुक्त भाषा लिंक पर क्लिक करने के बाद मैंने अपने मार्ग परिवर्तन चाहते
routes.MapRoute(
"en", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "EN", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
जब मैं उपयुक्त लिंक (भाषा स्विचर) पर क्लिक करें यह परिवर्तन CultureInfo जो सभी धागे को लगातार है । स्विचर साथ _Layout दृश्य:
<ul>
<li>@Html.ActionLink("En", "ChangeCulture", null, new { lang = "en"}, null)</li>
<li>@Html.ActionLink("Pl", "ChangeCulture", null, new { lang = "pl"}, null)</li>
</ul>
और नियंत्रक (जो भी स्थिर चर लैंग हर नियंत्रक की विधि में देखा जा सकता है कि और अनुरोधों के बीच लगातार हो सेट):
public ActionResult ChangeCulture(string lang)
{
PLController.lang = lang;
CultureSettings setCulture = new CultureSettings();
setCulture.InitializeCulture(lang);
cookie.Value = CultureInfo.CurrentCulture.Name;
this.ControllerContext.HttpContext.Response.Cookies.Add(cookie);
return View("Index");
}
InitializeCulture विधि पृष्ठ से ओवरराइड है निम्नानुसार वर्ग:
public class CultureSettings : Page{
public void InitializeCulture(string culture)
{
String selectedLanguage;
if(culture == null)
{
selectedLanguage = "pl";
}
else
{
selectedLanguage = culture;
}
UICulture = selectedLanguage;
Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(selectedLanguage);
base.InitializeCulture();
}
}
यह संस्कृतिइन्फो को ठीक से सेट करता है। अब मैं चाहता हूं (मौजूदा संस्कृतिइन्फो के मुताबिक) प्रत्येक नेविगेशन लिंक के लिए मार्ग स्विच करें और mysite.com/PL/{controller}/{action} से mysite.com/EN/{controller}/{action} पर रूट पैटर्न बदलें।
क्या किसी के पास इस समस्या के लिए कोई विचार या शायद बेहतर दृष्टिकोण है? लेकिन शर्त यह है कि पता इस mysite.com/EN या mysite.com/PL की तरह दिखना चाहिए - अलग नहीं (यानी en.mysite.com)
आपको बहुत बहुत धन्यवाद! मैं इस दृष्टिकोण की कोशिश करूंगा! – lukaleli
और मेरे पास आपके लिए एक और सवाल है क्योंकि यह काम नहीं कर रहा है:/ मुझे नहीं पता क्यों, लेकिन मुझे लगता है कि आवेदन शुरू होने के बाद मार्ग स्थापित नहीं किए गए हैं। त्रुटि है: '/' अनुप्रयोग में सर्वर त्रुटि। संसाधन नहीं मिला। विवरण: HTTP 404. जिस संसाधन को आप ढूंढ रहे हैं (या इसकी निर्भरताओं में से एक) को हटा दिया जा सकता था, इसका नाम बदल गया था, या अस्थायी रूप से अनुपलब्ध है। कृपया निम्नलिखित यूआरएल की समीक्षा करें और सुनिश्चित करें कि यह सही वर्तनी है। अनुरोधित यूआरएल:/ कोई विचार? मैं एएसपी.नेट और एमवीसी – lukaleli
में कुल नौसिखिया हूं ठीक है, यह अब काम कर रहा है। मैं नियंत्रक का नाम बदलना भूल गया;) – lukaleli