将ASP.MVC 3应用程序部署到子文件夹(而不是root)时,如何处理路由?

时间:2011-06-09 21:44:28

标签: asp.net-mvc url-routing

我正在我的本地计算机上开发一个ASP.MVC 3项目,它位于本地Web服务器的根目录下。

localhost:12345/(project is here)

但是,当我部署到我们的公共Web服务器时,此应用程序将位于子文件夹

www.mycompany.com/myapp/(project goes here)

我该如何处理这种不匹配?想到几个问题:

  1. 我是否需要调整我的MVC路线?或者他们会在/ myapp /?

  2. 之后捕获任何内容
  3. 当我真的不希望'Home'出现在路线中时,我是否会使用HomeController? ie / myapp / home /(action)/(id) - 我想要这个:/ myapp /(action)/(id)如果Home是控制器。

  4. 我应该在本地计算机上匹配此文件夹结构吗? (此项目永远不会访问'myapp'文件夹之外的任何内容)

  5. 如果3是,是怎么回事?

  6. 我在本地使用VS 2010和IIS Express。

2 个答案:

答案 0 :(得分:2)

  1. 路由相对于Web应用程序。这意味着您不需要在路线中使用/ myapp /。
  2. 不,您不需要在路线中显示Home。就个人而言,我采取了默认路线。
  3. 不,您不需要匹配此文件夹结构。

答案 1 :(得分:2)

根据我们的经验,我发现在控制器中路线没有问题。

但是,如果在视图中使用HTML帮助程序,例如Html.BeginForm或Html.Action,则这些辅助程序不适用于接收控制器,操作参数的重载方法。您需要使用Url.Content,

将整个Url放在Html助手中

这不起作用:

Html.BeginForm()

Html.BeginForm("ResetPassword", "Account")

但这有效:

Html.BeginForm(Url.Content("~/Account/ResetPassword");