2012-06-21 18 views
8

Estoy usando el editor de Kendo UI, así que tengo un gran problema.¿Cómo utilizar Kendo UI Editor en asp.net mvc3 con afeitadora?

No sé cómo mostrar los elementos que devuelve el editor.

Editor de convertir algo como:

<img src="someurl" /> 

a:

lt;p&gt;&lt;img src=&quot;someurl&quot;/&gt;&lt;/p&gt; 

y sigo cadena convertida en la base de datos, y trato de mostrarlo con:

@Html.Raw(item.description) 

donde descripción es la cadena devuelto por kendo.

así que no tengo idea de cómo visualizar correctamente en mi opinión

se agradecería cualquier ayuda.

+0

Se puede publicar la forma en la parte pertinente del tu vista se parece? – nemesv

+0

Lo agrego a mi publicación. –

+0

¿También puede publicar dónde define el editor de interfaz de usuario de Kendo en su vista? ¿Y también la forma en que publicas los datos? – nemesv

Respuesta

12

Existe una opción del editor KendeUI llamada encoded que configura si el Editor debe enviar etiquetas HTML codificadas o no.

El valor por defecto para encoded es true

Si quieres probar para almacenar el texto sin codificar utilizar este sniplet al crear su editor:

$("#Editor").kendoEditor({ 
    encoded: false 
}); 

Pero debido a que no está enviando texto codificado a la servidor, el validador de solicitud Asp.net entra en acción y abortará su solicitud.

Si está utilizando puntos de vista inflexible lo que puede hacer es utilizar el AllowHtmlAttribute en su propiedad de modelo:

Vista:

@model MyModel 

@using(Html.BeginForm("SomeAction", "SomeController")) 
{ 
    @Html.TextAreaFor(m => m.Editor) 
    <input type="submit" value="Save" /> 
} 

<script type="text/javascript"> 
    $(function(){ 
     $("#Editor").kendoEditor({ 
     encoded: false 
     }); 
    }); 
</script> 

Modelo:

public class MyModel 
{ 
    [AllowHtml] 
    public string Editor { get; set; } 
} 

acción del controlador

public ActionResult SomeAction(MyModel myModel) 
{ 
    //Save to db, etc. 
} 

También es necesario establecer lo siguiente en su web.config o este atributo no tendrá efecto en .NET 4.0:

<httpRuntime requestValidationMode="2.0"/> 
+0

Gracias, pero soluciona solo la mitad de mi problema porque hay nuevos problemas con él. Si configuro esta opción como 'falso', tengo un problema con las comillas y un error:' Se detectó un valor Request.Form potencialmente peligroso del cliente'. Entonces, ¿tal vez una mejor manera es 'codificar: verdadero' y usar alguna conversión para codificarlo en el controlador? Alguna idea de como? –

+0

Utilice el atributo '[AllowHtml]' para las propiedades que están vinculadas para el editor KendoUI. – nemesv

+0

No estoy seguro de dónde debería agregar el atributo '[AllowHtml]'. –

5

manera más simple de hacerlo es hacer cambios en el controlador, no hay a la vista y el modelo .Por lo tanto:

Ver

$("#Editor").kendoEditor(); 

Modelo

public class MyModel 
{ 
    public string Editor { get; set; } 
} 

controlador

Editor = Server.HtmlDecode(Editor); 

HtmlDecode

7

He encontrado esta solución para MVC: en Ver

<div class="editor-field"> 
    @(Html.Kendo().EditorFor(model => model.HtmlField).Encode(false)) 
    @Html.ValidationMessageFor(model => model.HtmlField) 
</div> 

en el modelo:

[DataType(DataType.Html)] 
    [AllowHtml] 
    public string HtmlField{ get; set; } 

Eso fue suficiente

+0

¡¡¡¡¡¡acaba de funcionar para mí !!!!!!!!!! El Update Crud no estaba presionando el controlador cuando se usa Html.Kendo(). EditorFor en una plantilla para la ventana emergente de la cuadrícula. Agregué los dos atributos anteriores y funcionó. ¡Ojalá pudiera darte 10 votos favorables! – KeyboardFriendly

Cuestiones relacionadas