2009-10-16 7 views
3

J'ai mis en place un formulaire en utilisant TinyMCE dans mon site Web MVC. Pour ce faire, j'ai une ajaxForm dans une vue partielle comme ceci:TinyMCE avec formulaire Ajax dans 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> 

Le rendu composant tinymce bien, et je peux changer mon texte en gras, souligné, etc .. Cependant, lorsque je clique sur enregistrer, la requête est envoyée avec le contenu textarea sans son formatage (je l'ai surveillé avec firebug). Pourquoi? Existe-t-il une fonction d'effacement HTML activée par défaut avec un formulaire ajax?

Merci.

Répondre

4

Vous devez enregistrer le texte de tinymce dans cette zone de texte avant de l'envoyer. Fonction OnBegin est trop tard, donc je l'ai fait de cette façon:

function tinyToText() { 

       ed = tinyMCE.getInstanceById('yourId'); 

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

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

Il semble que vous ayez besoin d'ajouter un gestionnaire OnBegin à votre AjaxOptions pour appeler tinyMCE.triggerSave() avant que votre formulaire n'envoie. Je suis plus familier avec jQuery, donc vous devrez peut-être corriger la syntaxe pour les appels Ajax.BeginForm.

new AjaxOptions() 
{ 
    UpdateTargetId = CustomerViewModel.WindowContentContainerId, 
    OnFailure = "addValidation", 
    OnBegin = "preSubmit" 
    //OnSuccess = "refresh" 
} 

<script="text/javascript"> 
    function preSubmit() { 
    tinyMCE.triggerSave(); 
    } 
</script> 
+0

Lorsque j'utilise votre méthode, hélas, il soumet la demande comme demande de poste normale et non un un ajax, toute ma page est refresh – Gregoire