如何在url中使用Area的不同名称,而不重命名文件

时间:2018-01-18 07:56:16

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

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

mysite.com/Vendor/Home/index

此名称仅供内部使用,因此我只想在网址中更改为全部&#39 ;;像这样:

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

这个想法是,路由看起来会有所不同,但它实际上会搜索“供应商”。但情况并非如此。现在它无法找到我的任何观点,因为它正在寻找'指数'提交所有'文件夹不存在。

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

1 个答案:

答案 0 :(得分:2)

区域可以控制视图视图的位置。但是,路由属于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 };
}