asp.netラベルのWebコントロールがあります。jQuery .html()関数を使用してテキストを動的に変更します。サーバー上のラベルの現在価値を取得しようとすると、ページがロードされたときの非常に元の値が表示されます。サーバー上でそれらを調達できるように、ラベルにjQueryの変更を永続的にする方法はありますか?
2 に答える
JQueryの変更を、サーバー側で永続する別のコントロールにミラーリングする必要があります。
たとえば、runat="server"
これに変更をシャドウイングする非表示フィールドを使用すると、これはサーバー上に保持されます。つまり、非表示フィールドからラベルの変更を読み取ります。
それで
JQuery
$('#labelID').html('New Text');
$('#hiddenFieldID').val('New Text');
サーバ側
string labelText = hiddenFieldID.value;
それはきれいではありませんが、それは私がそれをすることを見つけた唯一の方法です。
JQueryは相互作用しないViewState
ため、JQueryによる変更はポストバックで失われます。これが、人々が現在MVCに向かっていると私が思う理由の1つです。ポストバックアーキテクチャは、クライアント側の変更ではうまく機能しません
私はあなたが箱から出してこれを行うことができるとは思いません(私は間違っているかもしれませんが)。問題は、ラベルがHTMLフォームフィールドではないため、その値がポストバック時にサーバーに返送されないため、更新された値ではなく、ViewState値またはデフォルト値のいずれかが使用されることです。
隠しフィールドにラベル値を設定することで、何かを一緒にハックすることができます。これは、ポストバック時にサーバーに返送され、変更された場合はそれを使用してポストバック時にラベルの値を入力しますか?