2012-01-15 46 views
1

我開發一個網站在ASP.Net形式接近)和手動重寫我的網址在我的Global.asax文件的Application_BeginRequest方法URL重寫,並在我的頁面的加載圖像

看看這個代碼:

<div style="background-image: url(<%= ResolveUrl("~/Storage/Images/admin-bk.gif") %>);"> 

我用這種方式在我的aspx文件來解決圖像或CSS文件或JS文件

問題是在這裏:

我有一個GridView(FlexiGrid),我使用jQuery阿賈克斯,並調用一個WebMethod來填充grid.and我的Web方法返回的HTML代碼。在這個網站碼我有一些圖片。

如果URL等於:

http://localhost/Cpanel/BasicDefinitions/Regions 

我的圖片加載right.But如果網址等於給

http://localhost/Cpanel/BasicDefinitions/Regions/ 

我的圖片不加載。

爲了解決這個問題,我需要在我的webmethod.But再次使用RESOLVEURL,因爲我知道這是不可能的webmethod.So使用它是沒有人在那裏幫助我處理這個錯誤?

這是我的webmethod:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Xml)] 
    public static string FetchRegionList(int page, int rp, string sortname, string sortorder, string query, string qtype) 
    { 

     XDocument xmlDoc = new XDocument(
      new XDeclaration("1.0", "utf-8", "yes"), 

       new XElement("rows", 
        new XElement("page", page.ToString()), 
        new XElement("total", RegionBLO.Load().Count.ToString()), 
        new XElement("row", new XAttribute("Id", row.Id.ToString()),               
                 new XElement("cell", "<img id='imgEdit' lang='" + row.Id.ToString() + @"' style='cursor:pointer;border:0px;' src='"+ ("~/Storage/Images/FlexGrid/edit.png") + "' title='Edit' /> 
                      <img id='imgDelete' lang='" + row.Id.ToString() + "' style='cursor:pointer;border:0px;' src='"+ ("~/Storage/Images/FlexGrid/close.png") + "' title='Delete' />") 
                ) 
           ) 

     ); 
     StringBuilder builder = new StringBuilder(); 
     using (TextWriter writer = new StringWriter(builder)) 
     { 
      xmlDoc.Save(writer); 
     } 

     return builder.ToString(); 
    } 

謝謝,阿里

回答

2

,而不是添加圖像作爲<img>標籤,你可以添加<span><a>標籤與預定義的CSS類editclose

new XElement("cell", "<a ... class='edit'></a><a ... class='delete'></a>") 

然後你就可以使用下面的CSS來給這些元素的背景圖像:

a.edit, a.delete { 
    display: inline-block; 
    width: 16px; 
    height: 16px; 
    cursor: pointer; 
    border:0px; 
    background-repeat: no-repeat; 
} 
a.edit { 
    background-image: url(../Images/FlexGrid/edit.png); 
} 
a.delete { 
    background-image: url(../Images/FlexGrid/delete.png); 
} 

從CSS文件中的圖像的路徑總是相對的CSS文件本身。因此,您不必擔心使用服務器端的ResolveUrl,瀏覽器將會找到圖像,而不管網站運行的虛擬路徑如何。

在這種情況下,文件位置:

~/storage/images/edit.png 
~/storage/images/delete.png 
~/storage/stylesheets/site.css 

所以你可以看到,路徑../Images/FlexGrid/edit.png,在CSS文件中使用時,將指向圖像。

+1

謝謝michielvoo。好主意 – 2012-01-15 15:50:45