هل يجب علي استبدال أنماط السلسلة في asp.net mvc باستخدام محرك عرض مخصص؟

StackOverflow https://stackoverflow.com/questions/2543055

سؤال

أن يكون لديك موقع ASP.NET MVC مترجم.تضيف وظيفة الترجمة معرف اللغة المكون من رقمين إلى عنوان URL، على سبيل المثال./es/Page.إذا لم يتم العثور على معرف لغة في عنوان URL، فسيقوم الموقع بالتبديل إلى ثقافة المتصفح الخاصة بالمستخدم.كل شيء جيد.ومع ذلك، فإن الارتباطات التشعبية للموقع، ومزيج من علامات href المضمنة، وارتباطات الإجراءات، وما إلى ذلك، لا تتضمن معرف اللغة الأساسي، لذلك عند النقر عبر الموقع، يتم فقدان الثقافة المحددة، ويعود الموقع إلى ثقافة متصفح المستخدم .

فكرتي (الكسولة) هي استبدال جميع قيم href، التي لا تشير إلى موقع خارجي، بعنوان URL المترجم (على سبيل المثال.تضمين /es/).بخلاف ذلك، ستحتاج جميع روابط الموقع إلى التحديث لتشمل رمز الثقافة.

هل هذا مجرد غبي عادي؟أو معقول ويجب القيام به باستخدام محرك عرض مخصص، أو أي طريقة أخرى؟

لا يوجد حل صحيح

نصائح أخرى

جوابي هو (حاليا):

يحتوي التطبيق على وحدة تحكم أساسية، حيث أضفت:

if (PathLanguageCode == "" && requestContext.HttpContext.Session["LanguageCode"] != null && requestContext.HttpContext.Request.RequestType == "GET")
{
    requestContext.HttpContext.Response.Redirect("/" + requestContext.HttpContext.Session["LanguageCode"] + requestContext.HttpContext.Request.RawUrl);
}

لا يوضح هذا المثال كيفية تعريف متغير PathLanguageCode، ولكنه يكفي على الأقل لإظهار كيف يمكن التعامل مع ذلك مركزيًا، دون استبدال قيم السلسلة.

الجانب السلبي الوحيد لهذا النهج، كما أرى، هو أن الموقع ليس صديقًا لمحركات البحث، وما إلى ذلك، حيث ينتهي بنا الأمر إلى إجراء الكثير من عمليات إعادة التوجيه.

إذا كنت ترغب في ذلك، يمكنك إلقاء نظرة على النهج الذي اتبعناه.يتحدث عن وضع الثقافة في عنوان URL.نأمل أن يساعد!

محرك عرض مثقف لـ MVC

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top