我在使用asp.net mvc2的路由基础结构时遇到了很多麻烦。我在我的global.asax文件中注册了以下路线可以.net mvc路由导致JavaScript错误?
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() }
);
问题出在第一条路线(“严格”)。三种类型的网址可以匹配第一条路线。 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})
这将产生网址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完全绕过,我可以看到的JS文件名中的路由值字典,而在我的控制器调试。
问题可能与javascript无关。正如我在我的问题中提到的,因为我使用id参数以及发生错误的docid参数。如果我改变ID为someid(或其他)一切正常。我认为(我可能是错误的)当“{控制器} .mvc/{docid}/{动作}/{id}”匹配出现问题 – 2010-08-16 07:12:34
我已经做了一些调试并更新了问题plz c如果你能帮我在这里问候 – 2010-08-16 07:23:42