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

时间:2015-05-22 12:07:18

标签: c# asp.net asp.net-mvc routes asp.net-mvc-5

我有三个方面:tpl1 - tpl2 - tpl3

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

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

(DataTokens.Add中的“tpl1”是动态的。)

网址是:http://localhost/tpl1/Home/Index

我需要隐藏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 }
            );

1 个答案:

答案 0 :(得分:1)

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

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

因此,您无法使用http://localhost/Home/Index代替http://localhost/tpl1/Home/Index

但是,您可以在结尾处隐藏Index,例如http://localhost/tpl1/Home。 使用Route文件,您只能控制应用程序内的URL。

相关问题