2012-04-04 34 views
0

我正在學習ASP.Net。我有一個動態創建的ImageButton,當用戶將鼠標懸停在控件上時,我想更改ImageURL。我曾經試過,但它不工作:ASP.Net在mouseOver上更改ImageButton.ImageUrl

imgStars.Attributes.Add("onmouseover", "this.src= '~/Images/4Stars.png'") 

如果我在代碼隱藏到〜/圖片設置imgStars.ImageURL/4Stars.png它的工作原理。但它在JavaScript中不起作用。

請幫忙。我試了幾個小時尋找答案,但我不知道該怎麼做。

+1

波浪符號「〜」是用特殊字符在*服務器上的路徑分辨率。這種路徑不能在客戶端上運行(這是腳本運行的地方)。您需要呈現瀏覽器可以理解的路徑。 – xanadont 2012-04-04 02:57:09

+0

這個技巧。當答案如此簡單時,我討厭它。我將'〜/ Images/4Stars.png'更改爲'Images/4Stars.png',它工作。我不確定如何將您的評論標記爲答案。如果你確實讓我知道。再次感謝 – yerty 2012-04-04 03:19:18

回答

1

「xanadont」正確回答了您的問題,但您的解決方案無法適用於所有情況。爲了確保每一個相對目錄將使用由客戶端,使用此代碼片段:

imgStars.Attributes.Add("onmouseover", "this.src= '" + this.Page.ResolveClientUrl("~/Images/4Stars.png") + "'"); 
+0

感謝您的幫助。但是我在「this」上得到一個錯誤,它說它是未定義的。我在VB中編碼而不是C#。這會有所作爲嗎? – yerty 2012-04-04 22:06:58

+0

是的,它是一種語法差異。使用「我」而不是「this」 – RichardB 2012-04-04 22:16:55

+0

謝謝你的訣竅 – yerty 2012-04-05 00:24:47

0

在VB中,你應該使用下面的代碼:

*imgBtnRegister.Attributes.Add("onmouseover", "this.src='" + Page.ResolveClientUrl("~/Images/Register_2.jpg") + "'") 
     imgBtnRegister.Attributes.Add("onmouseout", "this.src='" + Page.ResolveClientUrl("~/Images/Register_1.jpg") + "'")* 

use *Page.ResolveClientUrl("~/Images/Register_2.jpg")* instead of *this.Page.ResolveClientUrl("~/Images/Register_2.jpg")* 
相關問題