2015-05-22 83 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。