如何在不重命名文件的情况下为 url 中的区域使用不同的名称

How to use different name for Area in url, without renaming files

我有一个名为 Vendor 的区域,可以使用 url:

mysite.com/Vendor/Home/index

此名称仅供内部使用,因此我想仅在 url 中将其更改为 'All';像这样:

mysite.com/All/Home/index

我按如下方式设置 VendorAreaRegistration 文件:

public override string AreaName 
{
   get { return "All"; }
}

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        name: AreaName + "_default",
        url: AreaName + "/{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional };
}

当时的想法是,路由看起来会有所不同,但实际上会搜索 'Vendor'。然而,情况并非如此。现在它找不到我的任何视图,因为它正在 'all' 不存在的文件夹中查找 'index' 文件。

有没有办法做到这一点,更改任何文件或视图的名称?

区域是控制视图 和 URL 的位置的东西。但是,路由 与 URL 相关。所以如果你只想 URL 不同而不是文件位置,你应该只更改路由。

public override string AreaName 
{
   get { return "Vendor"; }
} 

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        name: AreaName + "_default",
        url: "All/{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional };
}