2009-10-16 25 views
3

我在我的MVC網站中使用TinyMCE設置了一個表單。要做到這一點,我有一個給ajaxForm在這樣的局部視圖:在ASP.NET MVC中使用Ajax表單的TinyMCE

 <% 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內容沒有格式(我用螢火蟲監視它)。爲什麼?有沒有任何HTML剝離功能默認啓用Ajax形式?

謝謝。

回答

4

您需要在提交之前將文本從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> 
+0

當我用你的方法,唉,它提出的要求爲正常POST請求不是一個AJAX一個,所以我所有的頁面刷新 – Gregoire 2009-11-25 02:57:05