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

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

مشکل در Routing

چهارشنبه, 26 دی 1397 13:05

مشکل در Routing

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

من از 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 دیگه( بدون زبان )

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

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

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

کسانی که از این پست تشکر کرده اند : morteza373,
چهارشنبه, 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 }
            );

        }
    }

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

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

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

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

چهارشنبه, 26 دی 1397 16:49
کسانی که از این پست تشکر کرده اند : morteza373,

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید