我正在运行IIS6的Web服务器上部署MCV 1.0项目。 (不是我的选择)我通过史蒂夫桑德森的文章Here和菲尔哈克的文章,但我仍然有问题。
现在我正试图从Steve Sandersons的文章中实现选项2。我遇到的主要问题是Home链接无法正确呈现。对于Instance,在我的站点地图中,我有以下内容:
<%= Html.ActionLink("Home", "Index", "Home") %>
这会在页面上呈现http://servername/JCIMS_Orange/Home.mvc
这是不正确的。
不管这个链接:
<%= 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
);
}
有谁能告诉我为什么我的主页链接无法正确呈现?我在WinXP上运行的localhost和运行Win2003 Server的Web服务器上都重复了这个错误。
感谢任何建议或指示
答案 0 :(得分:1)
为什么http://servername/JCIMS_Orange/Home.mvc
不正确?你期待它是什么?
编辑:路由定义中的参数默认值告诉系统路由中不需要索引。您可以尝试将action参数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" />
答案 1 :(得分:0)
丹尼斯,
感谢您的回复。在你的回答和更多的游戏之间,我能够让我的CSS工作。
我在Global.asax文件中使用了这个
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { controller = "Home", action = "", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "", id = "" }
);
另外,我必须在每个View文件中使用CSS链接。并且图形必须使用../像这样...
<img src="../Content/images/JCIMS_Banner.png" alt="JCIMS Banner" />
现在看来一切正常。谢谢你的帮助。
-MARK -