2012-12-31 120 views
0

我在客戶端有一個標籤。它的值由javascript更新。現在我想在服務器端訪問這個更新的值。但是,由於該值是在客戶端計算的,我沒有在服務器端獲得此更新值。我可能會使用隱藏字段獲取此更新的值。但除了使用隱藏字段之外,是否有任何不同的方式來訪問標籤值?訪問服務器端標籤的值

if (isNaN(tot)) { 
    document.getElementById('lbltotIntk').value = "0"; 
} else { 
    document.getElementById('lbltotIntk').innerText = tot.toFixed(2); 
    document.getElementById('<%=hdnIntTot.ClientID %>').value = tot.toFixed(2); 
} 

當我使用:lbltotIntk.text我沒有得到任何更新的值。你可以在這裏看到我在這裏使用了隱藏的字段。但我不想使用它。有沒有其他的方式來訪問標籤值..?

+0

請增加一些代碼,以便更好地理解... –

+0

if(isNaN(tot)){ document.getElementById('lbltotIntk')。value =「0」; } else { document.getElementById('lbltotIntk')。innerText = tot.toFixed(2); document.getElementById('<%= hdnIntTot.ClientID%>')。value = tot.toFixed(2); } 當我使用:lbltotIntk.text我沒有得到任何更新的值。 你可以在這裏看到我在這裏使用了隱藏字段。但我不想使用它。有沒有其他的方式來訪問標籤值..? – JacK

+0

@JacK:請編輯問題,以包含代碼,而不是將其粘貼到評論中。 –

回答

0

不,如果你正在改變客戶端的東西,你將無法獲得服務器端的更新值。

因爲在服務器端的值是從ViewState牽強,但是當我們在客戶方改變一些東西的ViewState沒有相應改變。所以我們獲得了舊的價值。這就是爲什麼使用隱藏字段的原因。這個問題不僅與標籤有關,您將在其他服務器控件中出現此問題。

3

標籤控件是隻讀控件......如果執行回發,您不能從客戶端覆蓋它並保持其值。

所以最好的解決方案是添加一個隱藏字段並設置值,然後從服務器端訪問它。

隱藏字段是很好的解決方案,但如果在這種情況下網頁中有30個標籤,則隱藏字段是開銷。 另一備選是使用文本框

.textBox 
    { 
    background-color:Transparent; 
    border: none; 
    } 

CSS和文本框的只讀屬性設置爲true。現在的文本框看起來像標籤..

+0

感謝隊友.... 好的替代方案 – JacK

+0

只讀文本框的方法將無法正常工作:對只讀文本框的更改不會在回發中保留。但是,您可以遍歷表單上的文本框,並使用控件的UniqueId(即DirectCast(oControl,TextBox).Text = Request.Form(oControl.UniqueID))從Request.Form中檢索ReadOnly TextBoxes的值。 –