2013-07-23 1 views
0

J'utilise CLEditor pour fournir un éditeur html à mon utilisateur de l'application, CLEditor utilise une zone de texte pour gérer le code html généré, j'utilise jquery ajax pour sauver le code html:Publication d'un paramètre de chaîne utilisant ajax ne fonctionnant pas lorsque la valeur du paramètre contient des balises html

$(".btnSave").click(function() { 
    var description = $(this).find("textarea[name='Description']").val(); 
    $.ajax({ 
      url: "/Product/SaveDescription", 
      data: { description: description }, 
      success: function (result) { 
       alert("Saved successfully."); 
      }, 
      error: function (xhr, state, msg) { 
       alert(msg); 
      } 
    }); 
}); 

mais quand ma variable (description) contient des balises html l'action ne se déclenche pas, et je reçois une erreur (erreur interne du serveur).

Ceci est ma méthode d'action:

public void SaveDescription(string description) 
{ 
    //save the description 
} 

Comme vous pouvez le voir, je ne suis pas en utilisant un liant modèle MVC qui ont besoin AllowHtml attribut pour permettre html, alors quel est le problème?

Merci pour votre aide.

Répondre

1

Ma première supposition serait que vous n'êtes pas autorisé à poster du contenu HTML encodé à l'action; Par conséquent, la question suivante: Quelle erreur de serveur obtenez-vous lors de la publication?

Vous pouvez désactiver ValidateRequest (pour la page ou le site), mais je doute que vous le vouliez pour l'ensemble de ce site; vous pouvez également essayer de remplacer le < et> dans la description à &lt; et &gt; avant de poster et d'annuler ce remplacement dans le tag SaveDescription (pas vraiment une solution souhaitée).

Jetez aussi un coup d'œil à ces réponses: Allow User to input HTML in ASP.NET MVC - ValidateInput or AllowHtml

+1

Ajout d'attribut [ValidateInput (false)] à la méthode d'action a résolu mon problème, merci beaucoup. – VahidNaderi

Questions connexes