2012-03-23 72 views
1

我試圖將TinyMCE wysiwyg的內容發佈到數據庫插入的控制器函數中。這樣的設置將始終顯示無法加載資源:服務器迴應500(內部服務器錯誤)的狀態理由是在Chrome瀏覽/管理/ postnewarticle /在錯誤控制檯中的數據路徑:如果字符串包含HTML標記,則無法解析AJAX發佈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>標記中。如果我用一些隨機的靜態字符串值替換「content」的值而沒有任何HTML標籤,控制器方法將正確執行。

這裏是控制器的方法,我試圖打:

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

請注意,對於「內容」的數據類型這裏是HtmlString ......這是從剛剛字符串,最終做了一些研究之後改變帶領我here。但無論是字符串還是HtmlString,如果內容的值包含HTML標記,則該操作仍不會執行。

任何和所有幫助表示讚賞!

+0

哈哈,編者按:我的意思是不要說「用段落標記」在我的問題中間。我輸入了字母p /括號,以致導致換行。 – AJH 2012-03-23 06:43:00

回答

2

它可以幫助你把它

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

之前URL編碼您的內容,並把它返回到服務器端的實際字符串。

+1

謝謝!我只需要將控制器方法中「content」的數據類型更改回「string」,並且在視圖中顯示內容時使用「Server.UrlDecode(content)」而不是「content」,但僅此而已。 – AJH 2012-03-25 04:37:29

+0

感謝這個明確的解決方案(這也可以幫助其他人) – Thariama 2012-03-26 07:37:35

相關問題