Einschränkung der Stringfeldlänge und Zeilenumbrüche

10

Das Szenario, das ich habe, scheint sehr verbreitet zu sein, aber ich habe bisher keine gute Lösung gefunden. So gibt es ASP.NET-MVC-Anwendung mit MSSQL-Datenbank im Back-End. Das Modell enthält die Klasse A mit dem Zeichenfolgenfeld Beschreibung, das auf 100 Zeichen beschränkt sein muss. Es ist wie folgt deklariert:

%Vor%

Die entsprechende Spalte in der Datenbank ist nvarchar mit Spaltenlänge = 100 . In der Benutzeroberfläche wird das Feld Beschreibung durch textarea mit maxlength = 100 dargestellt.

Jetzt kommt das Problem, wenn Zeilenumbrüche im Textbereich vorhanden sind. Sie werden auf der Clientseite als 1 Zeichen interpretiert, aber auf der Serverseite werden sie durch Environment.NewLine repräsentiert, das aus 2 Zeichen besteht (\ r \ n). Es überschreitet also die Datenbankspaltenlänge (die serverseitige Validierung schlägt vor dem gesamten Backend fehl, aber lassen Sie die Validierung aus Gründen der Einfachheit wegfallen).

Die Lösungen, die ich bisher gefunden habe, sind:

  1. Fügen Sie auf der Clientseite Magie hinzu, um Zeilenumbrüche zu interpretieren Textarea als zwei Zeichen. Ich mag diese Lösung nicht so wie sie kann verwirren einen Benutzer.
  2. Ersetzen Sie \ r \ n auf der Serverseite durch \ n. Scheint wie ein Hack, der das könnte habe einige Nebenwirkungen.
  3. Entfernen / erhöhen Sie die Spaltenlänge in der Datenbank. Der Einfachste (ohne serverseitige Validierungsproblem zu berücksichtigen), aber lassen Sie uns sag es ist nicht der Fall.

Ich denke, es sollte etwas anderes außer diesen dreien geben.

    
mayor 16.12.2013, 22:13
quelle

1 Antwort

1

Dies ist ein altes und bekanntes Problem mit MVC (ich bin mir nicht sicher, ob es gelöst wurde) aber verschiedene Browser behandeln Zeilenumbrüche unterschiedlich. Mein Vorschlag ist, benutzerdefinierte Binder wie Sie hier finden jQuery validieren textarea maxlength bug

    
Raymund 16.12.2013 23:02
quelle

Tags und Links