2009-07-14 6 views
0

In einer unserer ASP.NET MVC-Anwendung verwenden wir FCKEditor, um Benutzern die Eingabe von Rich Text zu ermöglichen. Um die Validierung in den Controller-Aktionen deaktivieren setzen wir das Attribut"Ein potentiell gefährlicher Request.Form-Wert .." Fehler, wenn ModelState.IsValid falsch ist

[ValidateInput(false)] 

Benutzer der Lage sind, den Rich-Text zu speichern und zu ändern, solange es keine Geschäftsvalidierungsfehler in der Seite sind.

Wenn eine der Geschäftsvalidierungen fehlschlägt und ModelState.IsValid auf false festgelegt ist, wird beim Rendern der Seite die folgende Ausnahme ausgelöst. Kann mir jemand sagen, wie ich dieses Problem lösen kann?

Ein potenziell gefährlicher Request.Form-Wert wurde von dem Client erkannt (Programme_Overview =“

Hier ist der Code

[ValidateInput(false)] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Schedule(FormCollection formValues) 
    { 
     // some code 
     if (ModelState.IsValid) 
     { 
      //do something here... 
     } 
     else 
     {    
      return View(programDetails); 
     } 


    } 

    //// View code that render the fckeditor text area 
    <%= Html.TextArea("Programme_Overview", Model.Programme.Overview, new { row = 7 })%> 
+0

Leider zu aktualisieren vergessen int er Original-Beitrag zu erwähnen . Wir setzen [ValidateInput (false)] in den Aktionsmethoden. Aber diese Ausnahme wird nur ausgelöst, wenn ModelState.IsValid false ist – Gopinath

Antwort

0

Es ist wahrscheinlich, einige HTML-Ausgabe von Ihrem FCKEditor wird irgendwie eingereicht.

können Sie versuchen, die Validierung zu deaktivieren:

public MyController 
{ 
    [ValidateInput (false)] 
    public ActionResult MyAction() 
    { 
    } 
} 
0

Fügen Sie einfach die folgende in Aktion:

[ValidateInput(false)] 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult SomeAction() {} 
+0

Auch nach Angabe von [ValidateInput (false)] wird die Ausnahme ausgelöst, wenn ModelState.IsValid beim Rendern der Ansicht auf false gesetzt ist – Gopinath

+0

Können Sie uns Ihre Aktionsmethode und die HTML-Formular? –

+0

darin, ich habe die Frage mit Code aktualisiert. – Gopinath

0

ich dieses Projekt bin zu raten, aus einem Pre-1.0 RTM-Projekt migriert wurde.

Original ASP.NET hat die Überprüfung auf Seitenebene "gefährliche Eingabe", dass Sie stolpern. Wir haben es systemweit mit einer Änderung an der Datei Web.config im Ordner Ansichten deaktiviert, aber ich erinnere mich nicht genau, wann wir diese Änderung vorgenommen haben. Wenn Ihr Projekt vor dieser Änderung steht, haben Sie diese Einstellung nicht in der Datei Web.config im Ordner Ansichten.

Sie können also ein neues MVC-Projekt erstellen und in der Datei Web.config nachsehen, welche Einstellungen Sie möglicherweise kopieren möchten. Sie können dies auch seitenweise deaktivieren, wenn Sie möchten.

http://www.asp.net/learn/whitepapers/request-validation/

+0

Brad Wilson, Ich bin nicht sicher, welche Version von MVC wir haben. Kannst du mir bitte sagen, wie ich es auf meinem PC finde? Wir haben MVC mit Hilfe von Web Installer vor 2 Monaten installiert. Die Datei "web.config" im Ordner "View" hat Gopinath

+0

Sie haben 1.0 installiert, und ich sehe die validatedRequest =" false "-Zeile ist da, also bin ich nicht klar, warum Sie diesen Fehler treffen sollten (es sei denn, Sie haben" validateRequest "hinzugefügt = true "zur <%@ Page %> Direktive in deiner tatsächlichen Seite). –

1

hatte gerade diese auftauchen, fix war die FCK-Konfigurationsdatei fckconfig.js

FCKConfig.HtmlEncodeOutput = false; 

sollte

FCKConfig.HtmlEncodeOutput = true ; 
Verwandte Themen