2009-10-16 8 views
3

Я создал форму с помощью TinyMCE на моем веб-сайте MVC. Для этого у меня есть ajaxForm в частичный вид, как это:TinyMCE с формой Ajax в ASP.NET MVC

 <% 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). Зачем? Есть ли какая-либо функция удаления дескриптора HTML по умолчанию с помощью формы ajax?

Спасибо.

ответ

4

U необходимо сохранить текст от tinymce до этого textArea перед отправкой. Функция OnBegin слишком поздно, так что я сделал это так:

function tinyToText() { 

       ed = tinyMCE.getInstanceById('yourId'); 

       if (ed) { 
        $("#yourId").val(ed.getContent()); 
       } 
      } 

<input type="submit" value="Send" onclick="tinyToText();" /> 
2

Похоже, вам нужно добавить обработчик OnBegin к вашему AjaxOptions, чтобы позвонить 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

Когда я использую свой метод, увы, он отправляет запрос как обычный пост запроса а не Аякса один, так что вся моя страница обновления – Gregoire

Смежные вопросы