2012-12-31 84 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的值。 –