2009-10-19 26 views
1

我在运行IIS6的Web服务器上部署MCV 1.0项目。 (不是我的选择)我通过史蒂夫桑德森文章Here和菲尔哈克的文章,但我仍然有probelms。IIS6上的MVC - 'Home'链接无法正常工作

现在我试图从Steve Sandersons的文章实现选项2。我遇到的主要问题是Home链接无法正确呈现。举例来说,在我的网站地图我都有以下:

<%= Html.ActionLink("Home", "Index", "Home") %> 

这使得在这些网页上http://servername/JCIMS_Orange/Home.mvc这是不正确的。

然而,这LINK:

<%= Html.ActionLink("About", "About", "Home") %> 

呈现为... http://servername/JCIMS_Orange/Home.mvc/About这是正确的

我的Global.asax中的RegisterRoutes功能看起来像:

 public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
      "Default",            // Route name 
      "{controller}.aspx/{action}/{id}",      // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Default2",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 
    } 

谁能告诉我为什么我的Home链接将无法正确显示?我在运行WinXP的本地主机上以及运行Win2003服务器的Web服务器上都重复了这个错误。

欣赏任何建议或指针

回答

1

为什么http://servername/JCIMS_Orange/Home.mvc不正确的?你期待的是什么?

编辑:路由定义中的参数默认值告诉系统在路由中不需要索引。您可以尝试简单地将操作参数default设置为空字符串。这应该强制通过Html.ActionLink生成的URL包含操作名称,即使对于索引操作。

routes.MapRoute(
     "Default",           // Route name 
     "{controller}.mvc/{action}/{id}",     // URL with parameters 
     new { controller = "Home", action = "", id = "" } // Parameter defaults 
    ); 

但是,我不认为这是最好的解决方案。如果你的图像和css在没有动作名称的情况下无法工作,那么这听起来像你没有正确地引用路径。你能提供一个你的图像链接的例子,也许你的CSS文件链接?没有看到他们的样子,我可以建议他们以“/”开头。

您需要修复这些链接,以便当您使用包含id参数的路由网址时,它们也适用于该实例。 (例如http://servername/JCIMS_Orange/Products.mvc/Details/5

编辑2:因为您的网站包含子文件夹,您需要在您的图片和css路径该子文件夹。用“/”开始相对URL意味着它正好位于服务器名称后面。使用“../”意味着它相对于当前路径,正如你所看到的,它不适用于默认的MVC路由,因为对于不同的操作,你的url有不同数量的元素。

包括你的子文件夹路径应该在任何情况下都能很好地工作。就像这样:

<img src="/JCIMS_Orange/Content/images/JCIMS_Banner.png" alt="JCIMS Banner" /> 
+0

我既的.aspx和.mvc既不作品试过..所以正确的路线设置为.aspx 我想我期待http://服务器/ JCIMS% 5FOrange/Home.aspx /索引 如果我在地址栏中键入该网址,该网页可以正常工作。 http://servername/JCIMS%5FOrange/Home.apsx URL让我进入页面,但noimages显示,我的CSS没有任何工作。 -MARK- – 2009-10-19 19:51:47

+0

HTTP://servername/JCIMS_Orange/Home.aspx让我到我的主页,我的所有菜单链接工作,但没有任何CSS或图形工作... 我的Site.Master具有以下 JCIMS Banner 我也试过...... JCIMS Banner ,我也试过...... JCIMS Banner 内容是关闭网站的根目录。这似乎应该是相当简单的解决...但现在它踢我的一个$$ :) – 2009-10-20 18:29:06

+0

行...你的编辑2工作正常。通过以这种方式将链接置于Site Master中似乎工作正常。再次感谢所有的帮助。 – 2009-10-20 22:03:02

0

丹尼斯,

谢谢您的答复。在你的回答和更多玩耍之间,我能够让我的CSS工作。

我在Global.asax文件

routes.MapRoute(
       "Default", 
       "{controller}.aspx/{action}/{id}", 
       new { controller = "Home", action = "", id = "" } 
      ); 

     routes.MapRoute(
      "Root", 
      "", 
      new { controller = "Home", action = "", id = "" } 
     ); 

此外,我不得不在每个视图文件CSS链接使用此。和图形不得不使用.. /像这样...

<img src="../Content/images/JCIMS_Banner.png" alt="JCIMS Banner" /> 

现在看来,一切工作。谢谢您的帮助。

-MARK-

+0

只要您有{id}部分的网址,您的CSS就会再次中断。我将再次编辑我的答案,如何引用内容文件。 – CoderDennis 2009-10-20 20:54:02