
[英]Default Controller route on MVC project is breaking the default route for the application
[英]How to know which default route is default and will be excute in MVC 4 of this code?
我有一个RouteConfig.cs文件,但我不知道该怎么做,请告诉我并向我解释。
关于asp.net MVC4
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
#region Special Page
// Admin Router
routes.MapRoute(
name: "Admin",
url: "Admin/",
defaults: new { area = "Admin", controller = "dashboard", action = "index" },
namespaces: new[] { "PixelCMS.Controllers" }
);
// Error Page, NotFound And UnderConstruction
routes.MapRoute(
name: "ErrorsLang",
url: "{culture}/Errors/{action}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Errors", action = "NotFound" },
constraints: new { culture = "[a-z]{2}" },
namespaces: new[] { "PixelCMS.Controllers" }
);
routes.MapRoute(
name: "Errors",
url: "Errors/{action}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Errors", action = "NotFound" },
namespaces: new[] { "PixelCMS.Controllers" }
);
// Home
//routes.MapRoute(
// name: "Home",
// url: "{culture}/",
// defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Home", action = "Index", type = "", slug = "" },
// namespaces: new[] { "PixelCMS.Controllers" }
//);
// Common
routes.MapRoute(
name: "Common",
url: "Common/{action}/{id}",
defaults: new { controller = "Common", action = "", id = UrlParameter.Optional },
namespaces: new[] { "PixelCMS.Controllers" }
);
// Common
routes.MapRoute(
name: "Widget",
url: "Widget/{action}/{id}",
defaults: new { controller = "Widget", action = "", id = UrlParameter.Optional },
namespaces: new[] { "PixelCMS.Controllers" }
);
// Login
routes.MapRoute(
name: "LoginPanel",
url: "account/{action}",
defaults: new { controller = "Account", action = "Register" },
namespaces: new[] { "PixelCMS.Controllers" }
);
// Login
routes.MapRoute(
name: "Account",
url: "account/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional },
namespaces: new[] { "PixelCMS.Controllers" }
);
routes.MapRoute(
name: "AccountLang",
url: "{culture}/account/{action}/{id}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Account", action = "Login", id = UrlParameter.Optional },
constraints: new { culture = "[a-z]{2}" },
namespaces: new[] { "PixelCMS.Controllers" }
);
// Contact
routes.MapRoute(
name: "ContactLang",
url: "{culture}/Contact/{add}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Content", action = "Contact", add = UrlParameter.Optional },
constraints: new { culture = "[a-z]{2}" },
namespaces: new[] { "PixelCMS.Controllers" }
);
routes.MapRoute(
name: "Contact",
url: "Contact/{add}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Content", action = "Contact",add=UrlParameter.Optional },
namespaces: new[] { "PixelCMS.Controllers" }
);
// Search
routes.MapRoute(
name: "SearchLang",
url: "{culture}/Search/",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Content", action = "Search" },
constraints: new { culture = "[a-z]{2}" },
namespaces: new[] { "PixelCMS.Controllers" }
);
routes.MapRoute(
name: "Search",
url: "Search/",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Content", action = "Search" },
namespaces: new[] { "PixelCMS.Controllers" }
);
// cart
routes.MapRoute(
name: "ShoppingCartLang",
url: "{culture}/ShoppingCart/",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "ShoppingCart", action = "Index", type = "", slug = "" },
constraints: new { culture = "[a-z]{2}" },
namespaces: new[] { "PixelCMS.Controllers" }
);
routes.MapRoute(
name: "ShoppingCart",
url: "ShoppingCart/",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "ShoppingCart", action = "Index", type = "", slug = "" },
namespaces: new[] { "PixelCMS.Controllers" }
);
#endregion
// Slug
//routes.MapRoute(
// name: "Slug",
// url: "{culture}/{slug1}/{slug2}/{slug3}/{slug4}",
// defaults: new { culture = UrlParameter.Optional, controller = "Content", action = "Slug", slug1 = UrlParameter.Optional, slug2 = UrlParameter.Optional, slug3 = UrlParameter.Optional, slug4 = UrlParameter.Optional },
// namespaces: new[] { "PixelCMS.Controllers" }
//);
routes.MapRoute(
name: "SlugLang",
url: "{culture}/{slug1}/{slug2}/{slug3}/{slug4}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Content", action = "Slug", slug1 = UrlParameter.Optional, slug2 = UrlParameter.Optional, slug3 = UrlParameter.Optional, slug4 = UrlParameter.Optional },
constraints: new { culture = "[a-z]{2}" },
namespaces: new[] { "PixelCMS.Controllers" }
);
routes.MapRoute(
name: "Slug",
url: "{slug1}/{slug2}/{slug3}/{slug4}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Content", action = "Slug", slug1 = UrlParameter.Optional, slug2 = UrlParameter.Optional, slug3 = UrlParameter.Optional, slug4 = UrlParameter.Optional },
namespaces: new[] { "PixelCMS.Controllers" }
);
`
而且我不知道RouteConfig是否会归档站点的所有链接? 我是有关MVC4的新手,以及路由文件和
@HTML.Action("LoadURL","Common",new {...})
@Html.Action().
该命令与Routeconfig.cs相对应
很抱歉给您回信而不是写评论。 (没有足够的声誉来发表评论)
路线按定义的顺序工作,在您的情况下,您定义了多个路线,并且无论何时发出任何请求,它都会从顶部开始并遍历到底部,与该规则匹配的第一个将被命中。
而且在大多数情况下,您不需要这么多的路由部分,只有很少的逻辑部分可以为您提供帮助。 对于一个实例
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这将尝试将url与控制器名称匹配,然后查看该控制器是否有任何动作,在这种情况下,id是可选的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.