【问题标题】:TinyMCE with Ajax Form in ASP.NET MVCTinyMCE 与 ASP.NET MVC 中的 Ajax 表单
【发布时间】:2009-10-16 23:49:38
【问题描述】:

我在我的 MVC 网站中使用 TinyMCE 设置了一个表单。为此,我在部分视图中有一个 ajaxForm,如下所示:

        <% using (Ajax.BeginForm(
                   (Model.ViewMode == ViewMode.Insert) ? "Create" : "Edit",
                   new AjaxOptions()
                   {
                       UpdateTargetId = CustomerViewModel.WindowContentContainerId,
                       OnFailure = "addValidation"
                       //OnSuccess = "refresh"
                   }))
               {%>

    bla bla

     <p>
                <label for="CustomerBaneer">
                    Baner:</label>
                <%= Html.TextArea(CustomerViewModel.FieldPrefix + "CustomerBaneer", Model.CustomerToEdit.CustomerBaneer)%>
                <%= Html.ValidationMessage(CustomerViewModel.FieldPrefix + "CustomerBaneer", "*")%>
     </p>
<input type="submit" value="Save" class="save" />
    <%}%>

    <script type="text/javascript">
     tinyMCE.init({
                mode : "textareas"
                });
            }
    </script>

tinyMce 组件渲染得很好,我可以将文本更改为粗体、下划线等。但是,当我单击保存时,请求会发送带有 textarea 内容的不带格式的内容(我已经使用 firebug 对其进行了监控) .为什么? ajax表单是否默认启用任何HTML剥离功能?

谢谢。

【问题讨论】:

    标签: asp.net-mvc tinymce


    【解决方案1】:

    在提交之前,您需要将文本从 tinymce 保存到该 textArea。 函数 OnBegin 为时已晚,所以我这样做了:

    function tinyToText() {
    
                    ed = tinyMCE.getInstanceById('yourId');
    
                    if (ed) {
                        $("#yourId").val(ed.getContent());
                    }
                }
    
    <input type="submit" value="Send" onclick="tinyToText();" />
    

    【讨论】:

      【解决方案2】:

      看起来您需要在 AjaxOptions 中添加一个 OnBegin 处理程序,以便在提交表单之前调用 tinyMCE.triggerSave()。我对 jQuery 比较熟悉,因此您可能需要修正 Ajax.BeginForm 调用的语法。

      new AjaxOptions()
      {
          UpdateTargetId = CustomerViewModel.WindowContentContainerId,
          OnFailure = "addValidation",
          OnBegin = "preSubmit"
          //OnSuccess = "refresh"
      }
      
      <script="text/javascript">
        function preSubmit() {
          tinyMCE.triggerSave();
        }
      </script>
      

      【讨论】:

      • 当我使用你的方法时,唉,它以普通的 post 请求而不是 ajax 提交请求,所以我的所有页面都在刷新
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 2010-10-21
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      相关资源
      最近更新 更多