在服务器端访问Label的值

时间:2012-12-31 06:00:50

标签: c# javascript html

我在客户端有一个标签。它的值由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时,我没有得到任何更新的值。你可以在这里看到我在这里使用了隐藏字段。但我不想用它。有没有其他方法可以访问标签值..?

2 个答案:

答案 0 :(得分:3)

标签控件是一个只读控件...如果执行回发,则不能从客户端覆盖它并保持其值。

所以最好的解决方案是添加一个隐藏字段并设置值,然后从服务器端访问它。

隐藏字段是很好的解决方案但是如果网页中有30个标签,那么30个隐藏字段就是开销。 另一个替代方法是在文本框上使用css

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

并将文本框的属性ReadOnly设置为true。现在文本框看起来像标签..

答案 1 :(得分:0)

不,如果您在客户端更改某些内容,则无法在服务器端获取更新的值。

因为在服务器端,值是从ViewState获取的,但是当我们在客户端更改某些内容时,ViewState不会相应地更改。所以我们得到了旧的价值。这就是使用hiddenfield的原因。此问题不仅出现在标签上,您还会遇到其他服务器控件的问题。