2008-10-19 77 views
0

我有一個按鈕,它以編程方式添加已定義的usercontrol。我正在重建Postback上的每個控件,並且它們顯示正常。如果我在文本框中放置文本,它顯示正常,但是我的圖像正在丟失它們的URL。任何想法爲什麼或如何解決這個問題?ImageUrl在回發時丟失了動態控件,但文本框保留其值

我試着添加AJAX updatepanel來查看是否會有所幫助,但事實並非如此。

爲了進一步解釋 - 我有一個按鈕,點擊後設置圖像的URL - 我也把這個值放在文本框中,看看是否發生了同樣的事情 - 回發後,我的文本框仍然有價值,但該圖像沒有 - 我的所有其他ASP.Net圖像都失去了他們的形象,他們被定義在控件上(即:ImageUrl)

---更新 好的,我發現了一些更多的見解我的問題 - 一些解決方案,但仍然存在一個問題。

圖像失去他們的網址的原因是因爲他們是,而不是ASP.Net圖像 - ASP.Net記得他們在回發時重新創建的值 - 但即時通過javascript改變主圖像失去其價值 - 我'非常確定這是因爲使用JavaScript來改變它,在回發後它恢復到以前的值...所以對於一個解決方案,我會嘗試將它填入一個隱藏的值,然後在回發中使用該值來定義ImageUrl的圖像...

回答

1

你是對的<img>是一個html控件,而<asp:Image>是一個服務器控件。只要服務器控件啓用了viewstate,它們就會在回發期間保留它們的值。

1

你是正確的,通過JavaScript更改圖像的URL將不會在回發期間返回,因爲這不是表單值。因此,如果不將它保存到表單域中,例如您建議的隱藏域,它將永遠丟失。

0

圖像不是表單域。這就是爲什麼它的價值永遠不會發布回服務器。

您的asp:Image控件在回發期間保留值的原因是因爲它們存儲在視圖狀態(存儲在隱藏字段中)。當你點擊按鈕時,這個視圖狀態被回發給服務器,並且在頁面生命週期的早期事件中,asp.net從viewstate中設置圖像控制的ImageUrl屬性。

簡而言之,服務器端表單控件值在回發後可用。同樣的方法,如果你有正常的html表單字段(https://www.w3schools.com/html/html_form_elements.asp),你會使用Request.Form集合得到它的值。

你正在設置你的圖像的src使用JavaScript(而且顯然不是原始視圖狀態),這就是爲什麼你沒有得到它的回發價值。您應該使用隱藏字段來使用javascript設置值,這可以在回發後提供。

相關問題