2012-03-23 11 views
1

TinyMCE wysiwygの内容をデータベースに挿入するコントローラ機能に投稿しようとしています。サーバは500(内部サーバーエラー)の状態で応答し Chromeのエラーコンソールにデータとしての私/管理/ postnewarticle /ルートを引用:文字列にHTMLタグが含まれていると、AJAX Post URLを解決できない(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()をウォッチ式として配置すると、TinyMCEテキスト領域に書いたものが<p>タグで囲まれていれば、ここで目的の値が得られることがわかります。 「コンテンツ」の値をHTMLタグなしのランダムな静的文字列値に置き換えると、コントローラメソッドが正しく実行されます。ここでは、「コンテンツ」のデータ型がHtmlStringされていることを

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

お知らせが...これがその最終的にいくつかの研究を行った後、単に文字列から変更されました:ここに

は私がヒットしようとしているコントローラのメソッドであります私を導いたhere。しかし、文字列かHtmlStringかに関係なく、コンテンツの値にHTMLタグが含まれている場合、アクションは実行されません。

ご協力いただきありがとうございます。それはあなたがそれを

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

を送信する前に、あなたのコンテンツをURLエンコードすると、サーバー側の実際の文字列に戻ってそれを回すために役立つかもしれない

+0

lol、編集者メモ:私はそこに私の質問の真ん中に「段落タグで包まれた」と言っています。私は、改行を引き起こしたので、p w /かっこをタイプしました。 – AJH

答えて

2

+1

ありがとうございました!私はちょうど "コンテンツ"の代わりに "Server.UrlDecode(コンテンツ)"を使用するビューのコンテンツを表示するとき、コントローラメソッドの "コンテンツ"のデータ型を "文字列"に戻す必要がありましたが、それだけです。 – AJH

+0

この明確な解決法がありがとう(これはほかの人にも役立つかもしれません) – Thariama

関連する問題