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:
Ich denke, es sollte etwas anderes außer diesen dreien geben.
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
Tags und Links asp.net-mvc c#