مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

morteza373

عضویت از 1394/10/30

مشکل در Routing

  • چهارشنبه 26 دی 1397
  • 13:05
تشکر میکنم

سلام خسته نباشید

من از routing زیر استفاده کردم:

 public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.Add("BlogDetails", new SeoFriendlyRoute("{lang}/Home/BlogDetail/{id}",
new RouteValueDictionary(new { controller = "Home", action = "BlogDetail" }),
new MvcRouteHandler()));


            routes.Add("RoomDetails", new SeoFriendlyRoute("{lang}/Home/Room/{id}",
new RouteValueDictionary(new { controller = "Home", action = "Room" }),
new MvcRouteHandler()));

            routes.Add("BlogCategories", new SeoFriendlyRoute("{lang}/Home/Blog/{id}",
new RouteValueDictionary(new { controller = "Home", action = "Blog" }),
new MvcRouteHandler()));


            // Localization route - it will be used as a route of the first priority 
            routes.MapRoute(
                name: "DefaultLocalized",
                url: "{lang}/{controller}/{action}/{id}",
                defaults: new
                {
                    controller = "Home",
                    action = "Index",
                    id = UrlParameter.Optional
                });


            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }
    }

چون سایت من دو زبانه هست ، قصد دارم تمام آدرس های عمومی سایت ( آنهایی که غیر مدیریتی هستند و نیاز به لاگین ندارند ) را با فرمت /Language/Controller/Action نمایش بدم که زبان سایت هم در اون معلوم باشه و در حال حاضر routing بالا باعث میشه که آدرس هایی که language ندارند دچار مشکل شوند،

پس من میخوام یه طوری باشه که کنترلر home از یک routing ( با نمایش زبان (language) ) استفاده کنه و کنترلر های دیگه هم از routing دیگه( بدون زبان )

لطفا راهنمایی کنید ،خیلی ممنون

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 26 دی 1397
  • 13:42

پارامتر Language را optional کنید.

کاربر سایت

morteza373

عضویت از 1394/10/30

  • چهارشنبه 26 دی 1397
  • 16:03

مورد بالا جواب نداد، حالا اگه بخوام راه حل رو عوض کنم و همون routing بالا رو طوری تغییر بدم یا یه routing جدید بهش اضافه کنم که برای یک url خاص (شامل یک کنترلر و اکشن و با متد post مثل این آدرس ckeditor/uploadimage ) جواب بده چیکار باید بکنم؟

قسمت مشخص شده در کد زیر هم جواب نداد ، یعنی اصلا اون قسمت کار نمیکنه و routing بالایی که مربوط با language هست اعمال میشه و نام کنترلر ckeditor رو به عنوان language تشخیص میده ، لطفا راهنمایی کنید، خیلی ممنون.

 public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.Add("BlogDetails", new SeoFriendlyRoute("{lang}/Home/BlogDetail/{id}",
new RouteValueDictionary(new { controller = "Home", action = "BlogDetail" }),
new MvcRouteHandler()));


            routes.Add("RoomDetails", new SeoFriendlyRoute("{lang}/Home/Room/{id}",
new RouteValueDictionary(new { controller = "Home", action = "Room" }),
new MvcRouteHandler()));

            routes.Add("BlogCategories", new SeoFriendlyRoute("{lang}/Home/Blog/{id}",
new RouteValueDictionary(new { controller = "Home", action = "Blog" }),
new MvcRouteHandler()));

            // Localization route - it will be used as a route of the first priority 
            routes.MapRoute(
                name: "DefaultLocalized",
                url: "{lang}/{controller}/{action}/{id}",
                defaults: new
                {
                    controller = "Home",
                    action = "Index",
                    id = UrlParameter.Optional
                });

            routes.MapRoute(
                name: "Ckeditor",
                url: "CKEditor/UploadImage/{id}",
                defaults: new { controller = "CKEditor", action = "UploadImage", id = UrlParameter.Optional }
            );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }
    }

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 26 دی 1397
  • 16:06

نمیدونم این پیاده سازی رو از کجا ایده گرفتید اگر لینک بدید من پیاده سازی اصلی بررسی کنیم. یه راه حل دیگر هم هست که به آن مقدار پیشفرض بدید که اگر توسط درخواست دهنده تعریف نشده باشد از آن استفاده کند.

کاربر سایت

morteza373

عضویت از 1394/10/30

  • چهارشنبه 26 دی 1397
  • 16:18

راستش خیلی وقت پیش اینو پیاده کردم لینکش یادم نیس ، فکر کنم از دو تا آموزش کمک گرفتم و از ترکیبی از اونها کد بالا رو درآوردم ، میشه شما یه لینک معرفی کنید که از مقدار پیش فرض استفاده کرده باشه ؟همون روشی که بهتره و خودتون گفتید ، ممنون

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 26 دی 1397
  • 16:49

این پیاده سازی تقریبا مناسبه.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)