2009-09-17 66 views
0

我已經看過堆棧溢出的類似問題,但一直未能找到解決此特定問題的方法。我有一個簡單的(不是真的,但讓我們假裝)帶有更新面板的ASP.NET頁面。ASP.NET:在提交前修改HiddenField的值

在此更新面板中,有一個HiddenField控件,其值將通過我自己的自定義JavaScript進行設置/更新。值更新,因爲我可以在使用Firebug的DOM中看到。

在此HiddenField旁邊有一個LinkButton,它調用JavaScript以使用OnClientClick(此作品)修改HiddenField的值。 LinkButton也有一個OnClick處理程序,該值在修改後執行。

但是,在OnClick處理程序中,我得到HiddenField的初始值,而不是由JavaScript設置的值!

這是爲什麼?這是「PEBKAC」的情況嗎?

編輯:嘗試與TextBox沒有任何成功相同的事情。也嘗試在提交表單之前使用Firebug手動修改值,但沒有成功。

編輯2:我只是意識到Page_LoadOnClick處理程序,這是搞亂的東西之前調用。我不會刪除這個問題,因爲其他人可能會遇到同樣的問題,並且可能會發現這個問題很有價值。

+0

也許一些代碼可能會幫助我們得到這個問題的底部。我已經完成了一些測試,並且可以使用'OnClientClick'設置隱藏字段的值,然後在服務器上的'OnClick'事件處理程序中檢索它。 – Phaedrus

+0

我發現我的代碼存在問題,並更新了問題以表明這一點。 –

回答

0

你是如何生成的客戶端上的新的輸入?是否有可能在服務器上執行此操作?

這種方式,您可以使用剛剛OnClick代替OnClickOnClientClick兩個。

+0

無法在服務器上生成新的輸入。 –

1

在我看來,這好像視圖狀態讓你成爲一個壞玩笑(經常)。我猜的是,當頁面回傳時,隱藏字段將使用Viewstate中包含的值進行初始化。

請嘗試一件事:不要直接通過yourHiddenField.Value訪問該值,而是在頁面的OnInit中將其與Request.Forms[yourHiddenField.UniqueId]一起獲取並將其轉換爲HiddenField並提取該值。我不確定這是否是正確的語法。如果我沒有記錯,那麼「張貼」的值應該在Request對象的某處。看看你是否有價值。如果你得到它,問題是在頁面的OnInit事件之後映射回來的viewstate。然後,我們必須找到一個解決方案...