私のシナリオはかなり一般的ですが、これまでのところ良い解決策は見つかりませんでした。したがって、MSSQLデータベースをバックエンドに置いたASP.NET MVCアプリケーションがあります。このモデルには、文字列フィールド記述を含むクラスAが含まれており、100文字に制限する必要があります。以下のように宣言されています:文字列フィールドの長さの制限と改行
[StringLength(100)]
public virtual string Description { get; set; }
データベース内の対応する列= 100カラム長とNVARCHARです。 UIのDescriptionフィールドは、maxlength = 100のテキストエリアで表されます。
ここで問題は、テキストエリアに改行がある場合です。クライアント側では1文字と解釈されますが、サーバ側では2文字(\ r \ n)のEnvironment.NewLineで表されます。したがって、データベースの列の長さを超えてしまいます(実際にはサーバー側の検証はバックエンドのものよりも前に失敗しますが、単純化のため検証は省略します)。私がこれまでに見つかった
解決策は以下のとおりです。
- は2つの文字として テキストエリアに改行を解釈するために、クライアント側でいくつかの魔法を追加します。私はできるだけこの解決策が好きではありません ユーザーを混乱させる。
- サーバー側で\ r \ nを\ nに置き換えます。 にいくつかの副作用があるかもしれないハックのように思えます。
- データベースの列の長さを削除/増やします。最も簡単なのは (サーバー側の検証の問題を考慮しないで)ですが、 はそうではないとしましょう。
私はこれらの3つの他に何かがあるはずです。