سلام خسته نباشید
من از 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 دیگه( بدون زبان )
لطفا راهنمایی کنید ،خیلی ممنون
پارامتر Language را optional کنید.
مورد بالا جواب نداد، حالا اگه بخوام راه حل رو عوض کنم و همون 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 }
);
}
}
نمیدونم این پیاده سازی رو از کجا ایده گرفتید اگر لینک بدید من پیاده سازی اصلی بررسی کنیم. یه راه حل دیگر هم هست که به آن مقدار پیشفرض بدید که اگر توسط درخواست دهنده تعریف نشده باشد از آن استفاده کند.
راستش خیلی وقت پیش اینو پیاده کردم لینکش یادم نیس ، فکر کنم از دو تا آموزش کمک گرفتم و از ترکیبی از اونها کد بالا رو درآوردم ، میشه شما یه لینک معرفی کنید که از مقدار پیش فرض استفاده کرده باشه ؟همون روشی که بهتره و خودتون گفتید ، ممنون
این پیاده سازی تقریبا مناسبه.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)