2014-04-22 44 views
1

我試圖實現URL路由到我的Web應用程序。
當我實現這個頁面沒有QueryStrings,它工作正常。使用URL路由與查詢字符串參數導致錯誤加載所有.png/.jpg圖像在ASP.NET 4.0

但是,當我嘗試實現相同的網頁使用querystrings其給予Jscript運行時錯誤。和圖像沒有發現

所以對於JS我解決這樣在我的Ajax調用使用ResolveClientUrl

<script src='<%=ResolveClientUrl("~/raphl_map/raphael-min.js") %>' type="text/javascript"></script> 

現在我動態生成相應的urlpath img標籤和麪臨的問題對那些動態影像,

Ajax的成功響應我使用for循環將li元素

var elAdd = "<li class=" + id_setClass + " > <img src="+photo_src+"/></li>"; 
$("#ul_itemlist").append(elAdd); 

的Global.asax

void RegisterRoutes(RouteCollection routes) 
     { 
     // routes.Ignore("{file}.png"); 
     // routes.IgnoreRoute("{file}.png"); 
     // routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpe?g" }); 
     // routes.Ignore("{*allpng}", new { allpng = @".*\.png(/.*)?" }); 
     routes.Add(new Route(@".*\.png", new StopRoutingHandler())); 
     routes.RouteExistingFiles = false; 

     routes.MapPageRoute("Home", "Home", "~/homepage.aspx"); 
     routes.MapPageRoute("Login", "Login", "~/Login.aspx"); 
     routes.MapPageRoute("Profile", "Profile/{user_id}", "~/MyProfile.aspx"); 
     } 

void Application_Start(object sender, EventArgs e) 
{ 
     RegisterRoutes(RouteTable.Routes); 
} 

事情我試過這不是爲我工作是

routes.Ignore("{*allpng}", new { allpng = @".*\.png(/.*)?" }); 
routes.Add(new Route(@".*\.png", new StopRoutingHandler())); 
+0

動態生成的圖像還是文件系統中的文件?對於後面的一個,你可以告訴IIS處理該請求並直接返回文件。也許還可以看看這個:http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx/ – ChrFin

+0

@chrfin:所有的圖像都是存儲在文件夾名稱爲'Images'和路徑保存在數據庫中,所以在Ajax調用我從數據庫中獲取imgpath並綁定到我動態生成的img標籤,因爲我更新了我的問題 –

回答

0

我認爲下面應該工作:

routes.IgnoreRoute("{*png}", new { png = @"(.*/)?.*\.png(/.*)?"}); 

這應該排除的路徑其中包含.png(在任何目錄中 - 這就是您忘記IMO的要點)。

+0

IgnoreRoute給出錯誤'CS1061:'系統。 Web.Routing.RouteCollection'不包含'IgnoreRoute'的定義,並且沒有找到接受'System.Web.Routing.RouteCollection'類型的第一個參數的擴展方法'IgnoreRoute'(你是否缺少using指令或程序集)? –

+0

您是否使用框架/包的lates版本? – ChrFin

+0

它的4.0(沒有MVC) –

相關問題