データ入力後に文字列をトリミングする最適な方法。カスタムモデルバインダーを作成する必要がありますか? 質問する

データ入力後に文字列をトリミングする最適な方法。カスタムモデルバインダーを作成する必要がありますか? 質問する

私は ASP.NET MVC を使用していますが、ユーザーが入力したすべての文字列フィールドを、データベースに挿入する前にトリミングしたいと考えています。また、データ入力フォームが多数あるため、ユーザーが入力したすべての文字列値を明示的にトリミングするのではなく、すべての文字列をトリミングするエレガントな方法を探しています。人々がどのように、いつ文字列をトリミングしているのかを知りたいです。

カスタム モデル バインダーを作成し、そこで文字列値をトリミングすることを考えました...そうすれば、すべてのトリミング ロジックが 1 か所にまとめられます。これは良いアプローチでしょうか? これを実行するコード サンプルはありますか?

ベストアンサー1

  public class TrimModelBinder : DefaultModelBinder
  {
    protected override void SetProperty(ControllerContext controllerContext, 
      ModelBindingContext bindingContext, 
      System.ComponentModel.PropertyDescriptor propertyDescriptor, object value)
    {
      if (propertyDescriptor.PropertyType == typeof(string))
      {
        var stringValue = (string)value;
        if (!string.IsNullOrWhiteSpace(stringValue))
        {
          value = stringValue.Trim();
        }
        else
        {
          value = null;
        }
      }

      base.SetProperty(controllerContext, bindingContext, 
                          propertyDescriptor, value);
    }
  }

このコードはどうでしょうか?

ModelBinders.Binders.DefaultBinder = new TrimModelBinder();

global.asax Application_Start イベントを設定します。

おすすめ記事