我在同一个域上有几个mvc应用程序,每个都有自己的目录。
mydomain.com/app1
mydomain.com/app2
等。
在根级别使用Url.Content()和Url.Action()时,“app1”部分会在网址中重复两次。
// code used to generate the links
<%= Url.Action("tetris", "Apps") %>
Page Url: mydomain.com/app1/ rendered link (broken): mydomain.com/app1/app1/Apps.aspx/tetris application root appears twice in the rendered url when at the root directory
Page Url: mydomain.com/app1/home.aspx/ rendered link (works): mydomain.com/app1/Apps.aspx/tetris application root appears once - everything works as expected
我的路线 - 我正在使用Phil haacks blog post
中的路线routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "Index", id = "" }
);
有什么想法吗?
答案 0 :(得分:3)
这是因为应用程序按内部最大导向到最外层目录的顺序处理web.configs。
您有两种方法可以解决此问题。
指定要在根目录或子目录中应用路由的名称空间。 http://msdn.microsoft.com/en-us/library/dd504958.aspx
routes.MapRoute( “根”,“”,新{...}, new [] {“MyNamespace.For.Root”} );
或者在根目录中将子目录指定为忽略的路由使用。 http://msdn.microsoft.com/en-us/library/dd505203.aspx
routes.IgnoreRoute( “/ APP1”); routes.IgnoreRoute( “/ APP2”);
答案 1 :(得分:0)
当我遇到此问题时,是因为有人在控制器上使用了RouteArea["app1"]
属性,但也将其包含在操作GET["apps1/Detail"]
中而不仅仅是GET["Detail"]