ASP MVC 5隐藏URL(路由)中的区域

本文关键字:区域 路由 MVC 隐藏 URL ASP | 更新日期: 2023-09-27 17:50:20

我有三个区域:tpl1 - tpl2 - tpl3

当我启动应用程序时,我选择使用哪个区域:

routes.MapRoute(
        "Default",
        "{controller}/{action}",
        new { controller = "Home", action = "Index" },
        new[] { "LojaOnline.Controllers" }
        ).DataTokens.Add("area", "tpl1");

(数据令牌中的"tpl1")。添加是动态的)

Url为:http://localhost/tpl1/Home/Index

我需要隐藏URL中的区域名称。像这样:

Url为:http://localhost/Home/Index

我在tpl1AreaRegistration.cs中有这个

context.MapRoute(
            "tpl1_default",
            "tpl1/{controller}/{action}/{id}",
            new {controller="Home", action = "Index", id = UrlParameter.Optional }
            );

但是如果我删除tpl1,应用程序不知道哪个控制器使用。

context.MapRoute(
            "tpl1_default",
            "{controller}/{action}/{id}",
            new {controller="Home", action = "Index", id = UrlParameter.Optional }
            );

ASP MVC 5隐藏URL(路由)中的区域

据我所知,这在IIS中是不可能的。

当你给URL为http://localhost/Home/Index。首先,它将连接到您的本地IIS,并在其中搜索应用程序名称为"Home",并在其中搜索脚本页面或Web表单,根据您选择的Web应用程序。但实际上,根据您的URL,您已指定您的应用程序为tpl1

所以你不能用http://localhost/Home/Index代替http://localhost/tpl1/Home/Index

但是,是的,你可以隐藏Index从URL在最后像http://localhost/tpl1/Home。使用路由文件,你只能控制应用程序中的URL。