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 を使用すると、更新された値が得られません。ここで隠しフィールドを使用したことがわかります。しかし、私はそれを使いたくありません。ラベル値にアクセスする他の方法はありますか..?

4

2 に答える 2

3

ラベル コントロールは読み取り専用コントロールです。ポストバックが実行された場合、クライアント側から上書きしてその値を維持することはできません。

したがって、最善の解決策は、隠しフィールドを追加して値を設定し、サーバー側からアクセスすることです。

隠しフィールドは良い解決策ですが、Web ページに 30 個のラベルがある場合、30 個の隠しフィールドはオーバーヘッドになります。別の代替手段は、テキストボックスでcssを使用することです

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

テキストボックスの ReadOnly プロパティを true に設定します。今、テキストボックスはラベルのようです..

于 2012-12-31T06:11:25.473 に答える
0

いいえ、クライアント側で何かを変更している場合、サーバー側では更新された値を取得できません。

サーバー側では値が取得されますがViewState、クライアント側で何かを変更してViewStateもそれに応じて変更されないためです。したがって、古い値を取得します。これが hiddenfield が使用される理由です。この問題はラベルだけでなく、他のサーバー コントロールでも発生します。

于 2012-12-31T06:09:58.713 に答える