2010-11-23 13 views
6

私はいくつかのページに<asp:TextBox TextMode="MultiLine">要素を持っています。ロード時には、VBコードを使用してそれらを読み込み、TinyMCEエディタ(jQuery TinyMCEプラグインを使用)に変換します。各テキストボックスには、データベースに挿入するためにテキストをコードに戻して戻す目的で、関連するボタンもあります。TinyMCE TextareaがASP.NETによって認識されない変更CodeBehind

送信ボタンをクリックすると、エディタの内容をテキストボックスに保存する必要がありますが、それは私の問題ではありません。私がそうした後でさえ、編集はコードの中に現れていません。

私が言及したように、私はjQueryを使用しています。ここに私のクリックハンドラがあります。したがってsubmitクラス、すべてのボタンは、ASP.NETのボタンを提出している点に注意してください:

$('input.submit').live('click', function() { 
    tinyMCE.EditorManager.triggerSave(); 
}); 

だから、どのボタンを送信したときをクリックすると、すべての TinyMCEのエディタは、その保存イベントがトリガされています。これが実行された後、私が探しているテキストエリアの値をチェックしています(JavaScriptを介して)。編集したようです(Chromeの開発ツールとconsole.logを使用しています):

サーバー側では
console.log($(this).parent().find('textarea').val()); 

は、しかし、私は送信ボタンのクリックハンドラでの編集のどれを見ていない:

Dim paragraph As String = Me.myTextArea.Text 
' Results in the original text, not the edited text 

その他の注意事項:

  • 各エディタは、独自の更新パネルにあります
  • 原因(HTML)を提出されているコンテンツの性質のために、私は EnableEventValidation="false"ValidateRequest="false"を設定しなければならなかった
  • (これは内部アプリケーションであり、この勧告は、より経験豊富な開発者から来た)
  • 私はにかなり新しいですよ.NET。しかし、この動作はちょうど私にはばかげているようです。私は何か重要なことを逃しているに違いない
+0

どのようにして、サーバーにデータを転送しますか? – Thariama

+0

ボタンは、適切な 'CommandName'と' CommandArgument'と 'OnCommand'を使用し、次いで分離コードでは、私は' Me.myTextArea.Text'によってデータにアクセスします。 –

+0

私は実際に問題を理解したと思うが、まだ私の理論をテストしていない。私は( 'OnCommand'ポストバックが(私は、デバッガで編集したテキストを参照してください)その後、JSの私のブレークポイントにヒットされ、(非同期に古いデータを送信する)最初に実行され、その後、VBの私のブレークポイントにヒットしたと思います私はVBデバッガの古いテキストを参照してください)。確かな理論だが、私が言ったように、テストされていない。 –

答えて

6

私はそれを理解しました。

元の質問に関する私のコメントでは、まさに私が提案したものでした。 ASP.NETの非同期ポストバックが発生し、古いテキストがサーバーに送信されました。次に、私のonclickは、テキストエリアに新しいテキストを保存し、私のブレークポイントを打つ(実際には、新しいテキストがテキストエリアに保存されていることを確認できるように)発砲していました。その後、サーバーは(古い)テキストを処理して、VBでブレークポイントを打ちました。

ASP.NETは、少なくとも非同期的な手段を使用しているときは、発生するすべてのonclickで最優先されるようです。つまり、javacriptで追加されたカスタムクリックハンドラは、のASP.NETクリック後にを発生させます。

これは、JSが複数のクリックハンドラをどのように処理するかを考慮すると、ある程度の意味があります。これは先着順処理です。

$(this).tinymce({ 
    script_url : '../scripts/tiny_mce.js', 
    theme: 'advanced', 
    plugins: 'save', 
    theme_advanced_buttons1 : 'bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,image,link,unlink,|,fontsizeselect,forecolorpicker', 
    theme_advanced_buttons2 : '', 
    theme_advanced_buttons3 : '', 
    content_css : '../css/landingpage-tinymce.css', 
    onchange_callback: function(ed) { 
     ed.save(); 
    } 
}); 

注テキストエリアにエディタの内容を保存しonchange_callback

ソリューションは、私の場合には、むしろ、ボタンのクリックに比べ、変更にTinyMCEのエディタの内容を保存することでした。これにより、編集者が「元に戻すレベル」と呼ぶ内容が追加されるたびに内容が保存されます。これは、ユーザーが何かを変更してカーソルを移動したり、

+0

これはすべての話ではなく、すべてのケースで機能しているわけではありません。問題の内容はわかりませんが、どんな助けでも大歓迎です。 –

+0

私は馬鹿だと分かった - 私の新しいバグはIf Not Page.IsPostBack ... End If' –

関連する問題