2013-03-18 18 views
1

我禁用了控件(標籤,按鈕等)的視圖狀態和用於測試目的的頁面。在頁面和控件上禁用視圖狀態不起作用

現在,當我更改客戶端上的標籤文本並攔截按鈕的單擊事件時,標籤仍顯示服務器先前發送的文本。

那麼是怎麼回事?我需要能夠更改客戶端上的數據並將其提供給服務器。

這是如何完成的?

+0

這聽起來像你不張貼回服務器,或者您發回服務器,但不會更改任何內容。服務器如何處理回發?禁用視圖狀態在這裏並不重要,文本是服務器發送的內容,因爲它是該控件的文本,並且看起來好像你已經在服務器上更改了它,僅僅是客戶端。 – 2013-03-18 20:38:59

+0

我在設置斷點的按鈕的Click事件中處理回發。是的只是想在客戶端改變它,並且通過放棄viewstate我想禁用服務器參與的數據持久性。當我禁用viewstate時,我不應該在服務器或客戶端上更改數據。它呢? – spiral 2013-03-18 20:47:09

+0

你想完成什麼?您不想保留更改後的文本,但您確實希望將更改的文本提供給服務器? – 2013-03-18 20:52:00

回答

0

標籤在客戶端呈現爲spans;因此,您將無法捕獲服務器端的更改,因爲它們不是輸入元素。

ASP.NET爲您提供了以編程方式更改標籤文本的錯覺,因爲它使用ViewState在每次回發中存儲/檢索此信息。通過禁用它,你放棄使用這個「功能」。

0

你需要做的是添加一個hidden input

在表單中添加:

<asp:HiddenField runat="server" id="hiddenHolder" /> 

然後在當您更改標籤的文字點擊事件的客戶端,也改變了hiddenHoldervalue。然後

在你後面的代碼可以得到價值:

string LabelText = hiddenHolder.Value; 

這樣您在客戶端上的變化是提供給服務器

相關問題