我已经在 web.xml 中部署了一个 mvc3 应用程序。如何在 Url.Action() 方法中添加虚拟目录名称?
例如:我的应用程序位于 mydomain.com\app
现在当我做
Url.Action 返回 action="/Home/Create" 但我想要的是 action = "/app/Home/Create"。
应该做什么 ?
我已经在 web.xml 中部署了一个 mvc3 应用程序。如何在 Url.Action() 方法中添加虚拟目录名称?
例如:我的应用程序位于 mydomain.com\app
现在当我做
Url.Action 返回 action="/Home/Create" 但我想要的是 action = "/app/Home/Create"。
应该做什么 ?
你不应该这样做。如果您的应用程序正确部署在 IIS 中的虚拟目录(例如App
)中,那么Url.Action("Create", "Home")
帮助程序将生成/app/home/Create
正确的 url。
映射路线(注意:此路线必须出现在默认路线之前)
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 文件中找到路线。
看来您要做的是创建一个区域。MVC 支持使用区域来进一步组织应用程序中的控制器和操作。
请参阅此 MSDN arcticle 了解更多信息: http: //msdn.microsoft.com/en-us/library/ee671793 (v=vs.100).aspx
最后,我使用 Url.Content("~/Home/Create") 返回整个 URL,无论是托管在主目录还是子目录上。