如何配置ActionLink格式以删除子目录?

时间:2010-06-09 18:49:01

标签: c# asp.net asp.net-mvc actionlink

假设映射到我的根主机目录的域是example.com。 GoDaddy强制将其他域映射到根目录的子目录。例如,我的第二个域example1.com已映射到example.com/example1

我将我的ASP.NET MVC站点上传到这样一个子目录,但却发现用于导航的ActionLinks具有以下格式:

http://example1.com/example1/Controller/Action

换句话说,即使我使用映射到子目录的域,该子目录仍然在URL中使用。我想更改ActionLinks的格式。

但是,我注意到我也可以通过访问:

来访问相同的路径
http://example1.com/Controller/Action

(省略子目录)

我想让我的ActionLinks自动删除子目录,因为它不是必需的。

这可以在不将ActionLinks更改为普通旧URL的情况下实现吗?

2 个答案:

答案 0 :(得分:1)

不,我不这么认为,因为动作链接主要用于渲染控制器/动作。如果你有服务器的安装访问权限,另一个解决方法是使用像iirf.codeplex.com这样的URL重写工具,它是免费的,效果很好。但是,重写可能会产生一些其他意想不到的后果,具体取决于您正在做什么。

HTH。

答案 1 :(得分:1)

您可以尝试在子目录中按顺序在global.asax中添加其他路由语句。例如:

routes.AddRoute("example1/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.AddRoute("{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });

我相信从全球的asax按顺序检查路线,因此您可以有效地将请求路由到正确的位置。但是,您的链接仍将包含URL中的“example1”文件夹。