Asp.net mvc 如何在RegisterArea中编码MapRoute以将默认区域路由到另一个区域(网站根目录)
如果用户直接访问区域根url(\Products),我希望将其路由到网站主页(\home)。RegisterArea route.map中的正确编码是什么 下面是项目中的文件夹结构以及它们如何映射到网站 /区域/产品->/产品 /查看/主页->/Home 如果用户转到/,则转到/Home(使用控制器Home的索引操作) 如果用户转到/Products,则转到/Home(使用控制器主页的索引操作) 如果用户转到/Products/Fruit,则使用控制器Fruit的索引操作/产品/水果 我有一个标准的RouteConfigAsp.net mvc 如何在RegisterArea中编码MapRoute以将默认区域路由到另一个区域(网站根目录),asp.net-mvc,routes,asp.net-mvc-areas,Asp.net Mvc,Routes,Asp.net Mvc Areas,如果用户直接访问区域根url(\Products),我希望将其路由到网站主页(\home)。RegisterArea route.map中的正确编码是什么 下面是项目中的文件夹结构以及它们如何映射到网站 /区域/产品->/产品 /查看/主页->/Home 如果用户转到/,则转到/Home(使用控制器Home的索引操作) 如果用户转到/Products,则转到/Home(使用控制器主页的索引操作) 如果用户转到/Products/Fruit,则使用控制器Fruit的索引操作/产品/水果 我有一个标
public static void RegisterRoutes(RouteCollection routes){
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
我在global.asax.cs文件中有一个标准条目
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
这是我更新的地区注册路线
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Product_default",
"Product/{controller}/{action}/{id}",
new {
area = "",
controller = "Home",
action = "Index",
id = UrlParameter.Optional });
}
如果我转到\Products,我会收到错误消息
找不到资源
描述:HTTP404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下URL并确保其拼写正确
请求的URL:/产品/
两种可能的解决方案,一些黑客可能会考虑的是:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
ProductAreaRegistration配置为默认控制器,该控制器将重定向到网站根目录上的主控制器(area=“”) 产品区域注册
public class ProductAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Product";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Product_default",
"Product/{controller}/{action}/{id}",
defaults: new { controller="Redirect", action = "Index", id = UrlParameter.Optional });
}
}
控制器
public class RedirectController : Controller
{
// GET: Product/Redirect
public ActionResult Index()
{
return RedirectToAction("Index","Home",new { area = "" });
}
}