2

我正在尝试从 TinyMCE 获取内容,但它只返回 null。它在对话框中加载的问题。对话框视图:

<form>
  <textarea name="content" cols="40" rows="25" id="tinymce"> 
    Dette er noget tekst
        </textarea>
</form>

<input class="close" onclick="get_editor_content()" name="submit" type="submit" value="Kontakt Oline" style="float: right" id="contenttiny" />
<script type="text/javascript">
  tinyMCE.init({
    // General options
    mode: "textareas",
    theme: "advanced",
    plugins: "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
</script>

打开对话框的视图:

<a class="openDialog" data-dialog-id="emailDialog" data-dialog-title="Kontakt/prospekt" href="/Home/tinymce">Contact US</a>

<div id="result"></div>

<script type="text/javascript">
  $.ajaxSetup({ cache: false });
  $(document).ready(function () {

    $(".openDialog").live("click", function (e) {
      e.preventDefault();
      $("<div ></div>")
        .addClass("dialog")
        .attr("id", $(this).attr("data-dialog-id"))
        .appendTo("body")
        .dialog({
          title: $(this).attr("data-dialog-title"),
          close: function () { $(this).remove() },
          modal: true,
          position: ['center', 40],
          minWidth: 670,
          resizable: false
        })
        .load(this.href);
    });
  });


  $(".close").live("click", function (e) {
    e.preventDefault();

    var content = tinyMCE.get('tinymce').getContent(); //$("#contenttiny").val();
    $.ajax({
      type: "POST",
      url: "/Home/tinymce",

      data: { "content": content },

      success: function (data) {

        $("#result").html(data.nameret);
        $(".dialog").dialog("close");
      },

      error: function (data) {
        alert("There was error processing this");
        $(this).closest(".dialog").dialog("close");
      }
    });

  });
</script>

控制器:

[HttpPost]
public ActionResult tinymce(string content)
 {    /*Your other processing logic will go here*/
  return Json(new
  {
    nameret = content
  }, JsonRequestBehavior.


  AllowGet);
}

PS我用这个例子来创建模态对话框。这是一个部分视图。可以在主索引视图中从 tinymce 获取内容。但不在ajax调用中。

4

1 回答 1

0

问题的解决方案相当简单。原因是 tinymce 正在返回 html 文本,默认情况下是不允许的。解决方案是改用[ValidateInput(false)]Controller 方法。

于 2013-01-17T07:27:39.897 回答