2010-07-22 169 views
1

我从asp.net的MVC切换1.0〜2.0查询字符串问题

我actionlinks:

<%=Html.ActionLink("Add bla", "addbla", new { id = Model.Id })%> 

现在产生的URL是这样的:

addbla/500

,而不是:

addbla/?Id=5008 

,这都与路由做:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

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

我怎样才能恢复原来的行为?

谢谢。

基督教

+0

目前的解决方案插入恢复旧行为除id:路线。 MapRoute(null,“{controller}/{action}”,new {controller =“Home”,action =“Index”}); 之前的其他maproute。仍然不明白为什么控制器收到id为null即使是这样的网址addbla/500 – cs0815 2010-07-22 13:47:52

回答

0

您可以从图路线

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

这就是我上面看到我的评论。我仍然不明白为什么一个URL bla/33导致我的控制器中id为空。 – cs0815 2010-07-22 14:06:41

+0

我没有看到您的评论,但我的想法是替换您的MapRoute,而不是之前插入它。 替换MapRoute,bla/33因为没有控制器bla和动作33而无法工作。它只能在bla工作吗?Id = 33 在另一个之前插入MapRoute(更通用并带有id)我的测试。 – Caline 2010-07-22 14:38:08

0

尝试使用,而不是混合大小写小写id。我在转换过的一个项目中没有看到这个问题,但我始终使用小写字母id

+0

我实际上已将其更改为id中的大写字母Id。既不可行。将更新问题 – cs0815 2010-07-22 12:27:04