2013-07-05 27 views
0

我在使用一個帶有telerik radeditor的MVC 4中的userControl。 我想提交radeditor的操作方法的內容,但如果我用戶editor.get_html()的代碼不執行。

的JavaScript調用操作方法如下:

function Save() { 
    var editor = $find("<%=radEdit.ClientID%>");   
    var editorHtmlContent = editor.get_html(); 
    var entityId = document.getElementById('hdEntityId').value;   
    var url = '<%=Url.Action("SaveNote", "staticController")%>'; 
    $.post(url, { EntityId: entityId, Desc: editorHtmlContent }, function (result) { }); 
} 

任何線索?

回答

1

發佈HTML標籤被認爲是安全威脅(HTML注入和跨站點腳本(XSS)),所以默認情況下它會被阻止。您有三種方式:

  1. 在發送到服務器之前,在客戶端對HTML進行編碼。你可以找到大量的閱讀,關於SO,例如這裏:Fastest method to escape HTML tags as HTML entities?
  2. 如果你強類型的模型類,並希望得到實際的HTML,您可以使用AllowHtmlAttribute

    public class XMLModel 
    { 
        public int EntityId { get; set; } 
    
        [AllowHtml] 
        public string Desc { get; set; } 
    } 
    
  3. 末選擇是禁用輸入驗證了整個動作,可與ValidateInputAttribute做到:

    [ValidateInput(false)] 
    [HttpPost] 
    public ActionResult SaveNote(...) 
    { 
        ... 
    } 
    

你應該選擇次e選項最適合你。