0

我在具有 Telerik Radeditor 的 MVC 4 中使用 userControl。我想将 radeditor 的内容提交给 action 方法,但是如果我使用 editor.get_html() ,则代码不会执行。

对 action 方法的 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) { });
}

任何线索?

4

1 回答 1

1

发布 HTML 标签被认为是一种安全威胁(HTML 注入和跨站点脚本 (XSS)),因此默认情况下会被阻止。你有三种方法可以解决这个问题:

  1. 在发送到服务器之前,在客户端对您的 HTML 进行编码。您可以在 SO 上找到很多关于此的阅读,例如:Fastest method to escape HTML tags as HTML entity?
  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(...)
    {
        ...
    }
    

您应该选择最适合您的选项。

于 2013-07-05T09:22:42.903 回答