0
为什么:ASP.NET MVC路由问题?
<%= Html.ActionLinkForAreas<UsersController>(c => c.User(), "My Details") %>
生成一个含有这样的一个网址:
用户/用户
但是:
<%= Html.ActionLinkForAreas<BlaController>(c => c.Index(1), "My Bla Di Bla")%>
像这样的URL:
布拉
而不是这样的:
布拉/索引
换句话说,为什么是Index操作“吞噬”。这是否与看起来像这样的路由有关:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.RouteExistingFiles = true;
routes.IgnoreRoute("Content/{*wildcard}");
routes.IgnoreRoute("Scripts/{*wildcard}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
还是有另一个原因?我怎样才能改变这种行为?谢谢。
最良好的祝愿,
基督教
谢谢。我问这是因为我的mvc contrib网格吞噬了索引位。另请参阅:http://stackoverflow.com/questions/4452031/mvc-contrib-pager - 对我的问题的第三条评论。我想有一个选择是重定向到索引动作,并使用其他一些动作,而不是Index作为我的动作链接等。 – cs0815 2010-12-16 15:52:16
@csetzkorn,不知道是否有一些与寻呼机的idiosynchracy。但是你肯定不会*使用默认操作。您可以愉快地移除'action =“Index”'部分,您的网站就可以正常工作。只有一些网址会比其他网址更长,因为它们会一直包含操作名称。 – 2010-12-16 15:54:09
或者我可以为一个控制器添加一个异常(使用长索引URL)?谢谢! – cs0815 2010-12-16 15:56:41