2

TinyMCE wysiwyg の内容を取得して、データベース挿入用のコントローラー関数に投稿しようとしています。この設定では、リソースの読み込みに失敗しました: サーバーは、Chrome のエラー コンソールのデータとして /admin/postnewarticle/ ルートを引用して、ステータス 500 (内部サーバー エラー) で応答しました:と常に表示されます。

$.ajax({
    url: '/admin/postnewarticle/',
    type: 'post',
    dataType: 'json',
    data: {
        content: tinyMCE.get('article-content').getContent(),
        title: $('#article-title').val(),
        articleType: $('#article-types option:selected').val()
    },
    success: function (result) {
        // success stuff
    }
});

Chrome でデバッグするときtinyMCE.get('article-content').getContent()、Watch Expression として配置すると、ここに目的の値が得られていることがわかります。TinyMCE テキスト領域に記述したものはすべて、<p>タグでラップされています。「コンテンツ」の値を、HTML タグを含まないランダムな静的文字列値に置き換えると、コントローラー メソッドが正しく実行されます。

これが私がヒットしようとしているコントローラーメソッドです:

[HttpPost]
[Authorize(Roles = "Administrators")]
[ValidateInput(false)]
public JsonResult PostNewArticle(string title, HtmlString content, string articleType)
{
    // do stuff
}

ここでの「コンテンツ」のデータ型は HtmlString であることに注意してください...これは、最終的に私をここに導いたいくつかの調査を行った後、単なる文字列から変更されました。ただし、文字列であろうと HtmlString であろうと、コンテンツの値に HTML タグが含まれている場合、アクションは実行されません。

どんな助けでも大歓迎です!

4

1 に答える 1

2

送信する前にコンテンツを URL エンコードすると役立つ場合があります

content: encodeURIComponent( tinyMCE.get('article-content').getContent() ),

サーバー側で実際の文字列に戻します。

于 2012-03-23T08:37:10.743 に答える