用于托管在子目录中的mvc3应用程序的Url.Action

时间:2013-02-21 13:29:09

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-areas

我在网上部署了一个mvc3应用程序。如何在Url.Action()方法中添加虚拟目录名?

例如:我的应用程序位于mydomain.com \ app

现在我做的时候

Url.Action返回action =“/ Home / Create”,但我想要的是action =“/ app / Home / Create”。

应该做什么?

4 个答案:

答案 0 :(得分:8)

你不应该这样做。如果您的应用程序已在IIS中的虚拟目录中正确部署(例如App),那么Url.Action("Create", "Home")帮助程序将生成/app/home/Create这是正确的URL。

答案 1 :(得分:1)

映射路线(注意:此路线必须在默认路线之前出现)

        context.MapRoute(
            name: "app",
            url: "app/{controller}/{action}/{id}",
            defaults: new { controller = "Test", action = "Index", id = UrlParameter.Optional }
        );

然后像这样使用Url.Action(应该给你/ app):

@Url.Action("Index", "Test")

您可以在Global.asax.cs文件中找到路线。

答案 2 :(得分:0)

您要做的就是创建一个区域。 MVC支持使用Area来进一步组织应用程序中的控制器和操作。

请参阅此MSDN arcticle以获取更多信息:http://msdn.microsoft.com/en-us/library/ee671793(v=vs.100).aspx

答案 3 :(得分:0)

最后我使用的是Url.Content(“〜/ Home / Create”),它返回整个URL,无论是托管在主目录还是子目录上。