2013-12-16 17 views
9

私のシナリオはかなり一般的ですが、これまでのところ良い解決策は見つかりませんでした。したがって、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で表されます。したがって、データベースの列の長さを超えてしまいます(実際にはサーバー側の検証はバックエンドのものよりも前に失敗しますが、単純化のため検証は省略します)。私がこれまでに見つかった

解決策は以下のとおりです。

  1. は2つの文字として テキストエリアに改行を解釈するために、クライアント側でいくつかの魔法を追加します。私はできるだけこの解決策が好きではありません ユーザーを混乱させる。
  2. サーバー側で\ r \ nを\ nに置き換えます。 にいくつかの副作用があるかもしれないハックのように思えます。
  3. データベースの列の長さを削除/増やします。最も簡単なのは (サーバー側の検証の問題を考慮しないで)ですが、 はそうではないとしましょう。

私はこれらの3つの他に何かがあるはずです。

答えて

1

これはMVCの以前の既知の問題です(解決されたかどうかはわかりません) しかし、ブラウザによっては改行が異なるように扱われます。私の提案は、あなたがここで見つけるもののようなカスタムモデルのバインダーです。jQuery validate textarea maxlength bug