【问题标题】:How to use different name for Area in url, without renaming files如何在 url 中使用不同的区域名称,而不重命名文件
【发布时间】:2018-06-27 05:33:09
【问题描述】:

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

mysite.com/Vendor/Home/index

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

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 };
}

这个想法是,路由看起来会有所不同,但实际上会搜索“供应商”。然而,情况并非如此。现在它找不到我的任何视图,因为它正在一个不存在的“all”文件夹中寻找“index”文件。

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

【问题讨论】:

    标签: asp.net-mvc model-view-controller asp.net-mvc-routing asp.net-mvc-areas


    【解决方案1】:

    区域是控制视图位置的东西 URL。然而,路由 only 与 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 };
    }
    

    【讨论】:

    • 完美。正是我需要的。谢谢。
    • 我们可以为admin/sub-admin/super-admin创建不同的文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多