2015-05-22 85 views
2

我有三个方面:tpl1 - tpl2 - tpl3在URL ASP MVC 5隐藏区(路线)

当我开始我选择的应用程序使用哪个区域:

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

(中DataTokens “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 } 
      ); 
+0

您可能会觉得这个问题有用:https://stackoverflow.com/questions/380221/how-to-hide-controller-name-in-url – Pseudonym

回答

1

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

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

所以你不能使用的,而不是http://localhost/Home/Indexhttp://localhost/tpl1/Home/Index

但是,是的,你可以在样http://localhost/tpl1/Home末隐藏URL中的Index。 使用路由文件,您只能控制应用程序内部的URL。