2011-02-03 12 views
3

htmlコントロールを取り消す必要があるときに問題が発生しました。クライアントサイドでJavaScriptを使用して追加しましたポストバック後に(サーバー側の検証のためオプションではありません)。クライアントサイドJavaScript ViewState asp .netフォームでの更新

私がこれを達成しようとしている方法がcr * pであり、これを実行するより良い方法があるかどうか教えてください。

基本的には、ユーザーが「追加」を押して、それらの各テクスチャボックスから入力した値を隠しフィールドに保存してコード内から読み取ると、最大10回のテキストボックスコントロールのクローニングが行われます後ろに。しかし、サーバー側の検証がポストバック後に成功しなかった場合、ViewStateは何も知らないので、動的に追加されたもの(クローン)のテキストボックスはすべて消えます。

  • フォームを包む隠しフィールド

  • に格納された値を使用して)(ドキュメントのonload上のすべてのクローン化されたテキストボックスを再構築します。ハック思えどちらも私は2可能な解決策を検討しています

    、 ajaxの更新パネルで、クローン化されたテクスチャボックスを外に置きます。したがって、ポストバック時に画面のこの部分を更新しません。

今、どういうわけか "" ViewStateは、クライアントサイドスクリプトを使用して追加したすべてのhtmlコントロールを認識できるようになりますか?どんな良いアイデアですか?クライアント側のスクリプトでこれを実現したいので、サーバー側のテキストボックスのクローン作成は考慮していません。

+0

私は、ページ上に10個の隠しコントロールを追加するというかなり汚い方法でした。このようにViewStateは常にそれらを認識しており、JavaScript経由でクライアントに非表示/非表示を切り替えることができます。 – Tsar

答えて

5

クライアント側でViewStateを変更することはできません。これを行うと、ビューステートが無効になり、ポストバックにエラーが発生します。

javascriptとjQueryを使用して、ドキュメント準備完了イベントのテキストボックスを非表示フィールドに格納された値でレンダリングすることを検討してください。 jQueryのテンプレートを見てみることをお勧めします。特に、JSONとしてデータを隠しフィールドに格納することができれば(http://weblogs.asp.net/scottgu/archive/2010/10/04/jquery-templates-data -link-and-globalization-公式 - jquery-plugins.aspxとして受け入れられます)。

関連する問題