我在使用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