2012-06-21 6 views
8

Uso editor dall'interfaccia utente di Kendo, quindi ho un grosso problema.Come utilizzare Kendo UI Editor in asp.net mvc3 con rasoio?

Non so come visualizzare gli elementi restituiti dall'editor.

Editor convertire qualcosa di simile:

<img src="someurl" /> 

a:

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

e io continuo stringa convertita nel database, e provare visualizzarla con:

@Html.Raw(item.description) 

cui descrizione è stringa restituito dal kendo.

quindi non ho idea di come visualizzare correttamente a mio avviso

Qualsiasi aiuto sarebbe apprezzato.

+0

di poter postare come la parte pertinente sembra la tua vista? – nemesv

+0

Lo aggiungo al mio post. –

+0

Puoi pubblicare anche dove definisci l'editor dell'interfaccia utente Kendo nella tua visualizzazione? E anche il modulo su come pubblichi i dati? – nemesv

risposta

12

Esiste un'opzione dell'editor KendeUI denominata encoded che consente di configurare se l'editor deve inviare o meno tag HTML codificati.

Il valore predefinito per encoded è true

Se wan't per memorizzare il testo in chiaro utilizzare questo sniplet quando si crea il proprio editor:

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

Ma perché non sta inviando il testo codificato al server, il validatore della richiesta di Asp.net si attiva e interrompe la richiesta.

Se si utilizza una vista fortemente tipizzati che cosa si può fare è quello di utilizzare il AllowHtmlAttribute sulla vostra proprietà modello

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> 

Modello:

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

azione controller

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

È inoltre necessario impostare quanto segue nel web.config o questo attributo non avrà effetto in .NET 4.0:

<httpRuntime requestValidationMode="2.0"/> 
+0

Grazie, ma risolve solo metà del mio problema perché ci sono nuovi problemi con esso. Se imposto questa opzione su 'false' ho un problema con le virgolette e un errore:' È stato rilevato un valore Request.Form potenzialmente pericoloso dal client'. Quindi forse il modo migliore è impostare 'encoded: true' e usare qualche conversione per codificarlo nel controller? Qualche idea come? –

+0

Utilizzare l'attributo '[AllowHtml]' per le proprietà associate all'editor KendoUI. – nemesv

+0

Non sono sicuro di dove dovrei aggiungere l'attributo '[AllowHtml]'. –

5

più semplice modo per farlo è fare cambiamenti nel controllo, non in vista e il modello .Quindi:

View

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

Modello

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

controller

Editor = Server.HtmlDecode(Editor); 

HtmlDecode

7

ho trovato questa soluzione per MVC: in vista

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

nel modello:

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

che era abbastanza

+0

ha appena lavorato per me !!!!!!!!!! L'aggiornamento Crud non ha colpito il controller quando si utilizza Html.Kendo(). EditorFor in un modello per la finestra a comparsa della griglia. Ho aggiunto i due attributi sopra e ha funzionato. Vorrei poterti dare 10 voti positivi !! – KeyboardFriendly