Asp.net mvc .NETMVC路由是否会导致JavaScript错误?

Asp.net mvc .NETMVC路由是否会导致JavaScript错误?,asp.net-mvc,routing,Asp.net Mvc,Routing,我在使用asp.net mvc2的路由基础设施时遇到很多问题。我在global.asax文件中注册了以下路由 routes.MapRoute( "strict", "{controller}.mvc/{docid}/{action}/{id}", new { action = "Index", id = "", docid = "" }, new { docid = @"\d+"}

我在使用asp.net mvc2的路由基础设施时遇到很多问题。我在global.asax文件中注册了以下路由

routes.MapRoute(
              "strict",
              "{controller}.mvc/{docid}/{action}/{id}",
              new { action = "Index", id = "", docid = "" },
              new { docid = @"\d+"}

            );
 routes.MapRoute(
              "default",
              "{controller}.mvc/{action}/{id}",
              new { action = "Index", id = "" },
              new { docConstraint = new DocumentConstraint() }
            ); 
问题在于第一条路线严格。三种URL可以匹配第一个路由。mycontroller/23/myaction、mycontroller/23/myaction/12或mycontroller/23/mvaction/stringid。如果我尝试在不指定id值的情况下使用此路由,则一切正常,例如:

Html.ActionLink("Link text", "ActionName", new{docid = 23});
一切进展顺利,但如果我使用以下链接:

  Html.ActionLink("Link text", "ActionName", new{docid = 23, id = 223})
这将生成绝对正确的url currentcontroller.mvc/23/ActionName/223,但当加载页面时,jquery1.4.2.min.js文件中会出现JavaScript错误

这很奇怪:如果我将id更改为someid=223,它将反映在查询字符串中,并且不会出现JS错误

编辑:我做了一些进一步的调试,发现当路由值中同时提到id和docid时,global.asax中忽略了一件事,那就是忽略路径

routes.RouteExistingFiles = false;
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.ignoreRoute完全被绕过,在控制器中调试时,我可以在route value dictionary中看到JS文件的名称

它给出了javascript错误 jquery1.4.2.min.js文件


最可能的原因是您在页面上显示的内容不同,并且您正在执行导致错误的操作。如果我们将脚本从解决方案资源管理器拖动到站点,您能否从呈现的页面提供足够的示例来显示您使用jQuery的目的?

<script type="text/javscript" src="../../scripts/jquery.min.js"></script> 

前导点。。我们正在制造问题。将源路径放在url.content中或使用/scripts而不是.././脚本将解决此问题,因为这些前导周期迫使它们匹配global.asax中的某个路由。

问题可能与javascript无关。正如我在问题中提到的,当我使用id参数和docid参数时,发生了错误。如果我把身份证换成别的什么,一切正常。我想当{controller}.mvc/{docid}/{action}/{id}匹配时我可能出了问题。我已经做了一些调试,并更新了问题plz c,如果你能在这里帮助我的话