2009-08-18 8 views
1

J'ai une simple vue ASP.Net MVC qui contient une zone de texte FCKeditor (créée à l'aide de la fonction Javascript ReplaceTextArea() de FCKeditor). Ceux-ci sont inclus dans une aide de Ajax.BeginForm:Paramètres d'action de liaison de problème utilisant FCKeditor, AJAX et ASP.NET MVC

<% using (Ajax.BeginForm("AddText", "Letters", 
     new AjaxOptions() { UpdateTargetId = "addTextResult" })) 
{%> 
    <div> 
     <input type="submit" value="Save" /> 
    </div>  

    <div>  
    <%=Html.TextArea("testBox", "Content", new { @name = "testBox" })%> 

    <script type=""text/javascript""> 
    window.onload = function() 
    { 
     var oFCKeditor = new FCKeditor('testBox') ; 
     var sBasePath = '<%= Url.Content("~/Content/FCKeditor/") %>'; 
     oFCKeditor.BasePath = sBasePath; 
     oFCKeditor.ToolbarSet = "Basic"; 
     oFCKeditor.Height = 400;  
     oFCKeditor.ReplaceTextarea() ; 
    } 
    </script> 

    <div id="addTextResult"> 

    </div> 
<%} %> 

L'action du contrôleur hanlding c'est:

[ValidateInput(false)] 
public ActionResult AddText(string testBox) 
{     
    return Content(testBox); 
} 

Lors de la présentation initiale du formulaire Ajax la chaîne de BOîTE DE TEST dans l'action AddText est toujours « Contenu » , quel que soit le contenu de FCKeditor a été changé. Si le formulaire Ajax est soumis à nouveau une deuxième fois (sans autres modifications), le paramètre testBox contient correctement le contenu du FCKeditor.

Si j'utilise un Html.TextArea sans le remplacer par FCKeditor, il fonctionne correctement, et si j'utilise un Postform standard, submit submit inplace de AJAX fonctionne comme prévu.

Est-ce que je fais quelque chose de mal?

Sinon, existe-t-il une solution de contournement appropriée/directe pour ce problème?

Répondre

1

Le problème n'est pas lié à MVC mais provoqué par l'utilisation de FCKeditor conjointement avec AJAX. Pour fixer dans le code ci-dessus j'ajouté ce qui suit à l'événement onclick du bouton Envoyer:

<input type="submit" value="Save" onclick="FCKeditorAPI.GetInstance('TestBox').UpdateLinkedField();" /> 

Pour plus d'informations see here.