2011-01-20 4 views
6

tengo un CMS ASP.NET 4.0 basada, cuando yo uso el TinyMCE (3.4) a través de jQuery para editar un cuadro de texto.ASP.Net 4.0 con TinyMCE y codificación XML re-codifica contenido de devolución de datos

Además de esto tengo varios otros cuadros de texto. También hay otra lista DropDown en la página, que controla Contenttype. Este control tiene AutoPostback habilitado y establece la visibilidad en los cuadros de texto con respecto al elemento seleccionado.

Como yo quiero mantener la devolución de datos de validación en que he configurado el TinyXML utilizar XML para la serialización de contenido (codificación: "xml").

Ahora tengo el problema, cuando una devolución de datos de, por ejemplo, la lista DropDown ocupa, vuelve a codificar el contenido.

Init: "Hallo" 
1st Postback: "<p>Hallo</p>" 
2nd Postback: "<p>&lt;p&gt;Hallo&lt;/p&gt;</p>" 

i han permitido al área de texto original mediante CSS y esto parece ser un problema de método Save del TinyMCS. ¿Alguien tiene una solución, cómo solucionar este problema, tal vez con un save_callback personalizado en el TinyMCE?

+1

Vea mi respuesta aquí http://stackoverflow.com/a/34100978/1201322 – Ravimallya

+0

Posible duplicado de [tinymce get HTML code when postback] (http: // stackoverflow.com/questions/5636219/tinymce-get-html-code-when-postback) –

Respuesta

0

¿Le parece útil la configuración entity_encoding?

+1

no, ya que esta configuración solo define la forma en que se codifican las antidades, y mi problema es que están codificadas dos veces. – Christoph

+0

hmm, entonces honestamente creo que este problema no es un problema de tinymce, ¿revisaste el otro código del lado del servidor y solicitó/resultados? – Thariama

+0

sí. habilité el área de texto subyacente (a través de css) y allí la devolución de datos hace que TinyMCE escriba el html doblemente codificado. El Postback no llamó a ningún método de código detrás. – Christoph

1

¿Es posible que los datos se vuelvan a cargar en la ventana de tinymce después de guardarlos?

Cuando me encontré con esto antes en TinyMCE/WebForms, se fija fácilmente mediante la decodificación de los datos antes de poblar el campo de formulario y después de las devoluciones de datos:

TextAreaID.Text = Server.HtmlDecode (" <p> hola </p > ");

1

Acabo de tener un problema similar con Tinymce y Asp.NET MVC. En mi caso lo que estaba ocurriendo era:

  1. Este formulario se envía y html tinymce codifica el contenido (estoy usando la opción encoding: 'xml')
  2. en mi servidor de acción post lado, me HTML decodificar las etiquetas Quiero permitir (ejemplo simplificado: decodedHtml = model.HtmlContent.Replace("&lt;p&gt;", "<p>")). A continuación, después de salvar a la base de datos y etc, puedo actualizar model.HtmlContent con el html decodificada (model.HtmlContent = decodedHtml)

pero en este momento el editor TinyMCE estaba mostrando el html codificada, es decir, en lugar de &lt;p&gt;test&lt;/p&gt;<p>test</p>, a pesar de que lo hice model.HtmlContent = decodedHtml en mi acción posterior. Lo que realmente sucede es que asp.net ignora el valor en el modelo en la devolución de datos y en su lugar vincula el valor publicado (consulte aquí http://weblog.west-wind.com/posts/2012/Apr/20/ASPNET-MVC-Postbacks-and-HtmlHelper-Controls-ignoring-Model-Changes para obtener más detalles sobre cómo funciona esto).

Una forma de evitar esto es en su acción posterior que hacer

ModelState.Remove("HtmlContent"); 

y luego se unirá el valor en su modelo de vista en lugar del valor publicado.

Así que en mi caso, el problema no era en realidad con tinymce pero con la forma en mensajes de forma trabajan en asp.net mvc. Espero que esto ayude a alguien.

Cuestiones relacionadas