【问题标题】:Url.Action for mvc3 application hosted in a sub directory托管在子目录中的 mvc3 应用程序的 Url.Action
【发布时间】:2013-02-21 13:29:09
【问题描述】:

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

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

现在我做的时候

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

应该怎么做?

【问题讨论】:

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


    【解决方案1】:

    您不需要这样做。如果您的应用程序正确部署在 IIS 中的虚拟目录中(比如 App),那么 Url.Action("Create", "Home") 助手将生成正确的 url /app/home/Create

    【讨论】:

    • 我支持这个,我在虚拟目录中托管多个应用程序,从未遇到过这个问题。
    【解决方案2】:

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

            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 文件中找到路线。

    【讨论】:

      【解决方案3】:

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

      有关更多信息,请参阅此 MSDN 文章:http://msdn.microsoft.com/en-us/library/ee671793(v=vs.100).aspx

      【讨论】:

        【解决方案4】:

        最后我使用 Url.Content("~/Home/Create") 来返回整个 URL,无论是托管在主目录还是子目录。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-09
          • 2015-01-30
          • 2020-03-25
          • 1970-01-01
          • 2012-01-23
          • 2013-09-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多