2012-02-29 113 views
0

我嘗試使用ASP.NET 4.0 WebForms路由。這裏是我的RegisterRoutes功能:ASP.NET 4.0 WebForms路由Javascript不起作用

void RegisterRoutes(RouteCollection routes) 
    { 
     routes.Ignore("{resource}.axd/{*pathInfo}"); 
     routes.MapPageRoute("GoodInfo", "catalog/good/{good}", "~/GoodInfo.aspx"); 
     routes.MapPageRoute("GoodGroup", "catalog/group/{group}", "~/default.aspx"); 
    } 

對於像/catalog/group/{group}一切的網頁就可以了。但頁面catalog/good/{good}有問題。

第一個奇怪的事情是:當我打開這個頁面時,它會調用兩次。所以我看到Page.RouteData.Values["good"]有什麼價值。第一次在Page.RouteData.Values["good"]有正確的值(my goodId),但第二次我得到字符串值「WebResource.axd」!

所以我的highslide JavaScript不能在頁面上工作。當我點擊highslide圖像時,頁面會重新加載而不是執行JavaScript。

我增加了這一行routes.Ignore("{resource}.axd/{*pathInfo}");但它沒有幫助我。有任何想法嗎?

+1

我有一個類似的問題在我的應用程序爲了「修復」它,我添加了在我們的頁面上改變了所有資源(圖片,CSS和JS)的引用鏈接,所以不是''我寫過類似''script type =」text/javascript「src =」/../ scripts/something.js「>'。請注意腳本源代碼中的額外斜槓。 VS會抱怨,但我會在運行時正常工作。我花了一段時間才弄明白這一點,我不得不嘗試不同的路徑組合,直到我終於得到這樣的路徑。希望對你有效。 – MilkyWayJoe 2012-03-02 20:11:34

回答

1

我已經解決了我的問題!該解決方案由2部分組成。 首先,我改變了我的腳本定義從

<script type="text/javascript" src="../scripts/something.js"></script> 

<script type="text/javascript" src="/../scripts/something.js"></script> 

感謝MilkyWayJoe FOT該解決方案。

其次我加忽略路由

routes.Ignore("catalog/good/{resource}.axd/{*pathInfo}"); 

代替:

routes.Ignore("{resource}.axd/{*pathInfo}"); 

所以我的網絡資源,對網頁沒有更多的途徑喜歡http://mysite.com/catalog/good/41

我也有在頁面上的腳本事件像http://mysite.com/catalog/good/41/event/seq/1。爲了趕上我添加到路由所有參數規則,該

routes.Ignore("catalog/good/{good}/{*query1}"); 
    routes.Ignore("catalog/good/{good}/{query1}/{*query2}"); 
    routes.Ignore("catalog/good/{good}/{query1}/{query2}/{*query3}"); 
    routes.Ignore("catalog/good/{good}/{query1}/{query2}/{query3}/{*query4}"); 

而且不要忘記,你的Ignore聲明前必須MapPageRoute聲明放在:

routes.Ignore("catalog/good/{resource}.axd/{*pathInfo}"); 
routes.MapPageRoute("GoodInfo", "catalog/good/{good}", "~/GoodInfo.aspx");`enter code here`