7

MVC Web API に渡されたモデルのすべてのプロパティをトリミングする最良の方法は何ですか (複雑なオブジェクトを使用したポスト メソッド)。簡単にできることの 1 つは、すべてのプロパティの getter で Trim 関数を呼び出すことです。しかし、私は本当にそれが好きではありません。

ここで MVC について言及されているような簡単な方法が必要ですASP.NET MVC: データ入力後に文字列をトリミングするための最良の方法。カスタム モデル バインダーを作成する必要がありますか?

4

2 に答える 2

15

Web API ですべての着信文字列値をトリミングするには、次を定義できますNewtonsoft.Json.JsonConverter

class TrimmingConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(string);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.String)
            if (reader.Value != null)
                return (reader.Value as string).Trim();

        return reader.Value;
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var text = (string)value;
        if (text == null)
            writer.WriteNull();
        else
            writer.WriteValue(text.Trim());
    }
}

次に、これを に登録しApplication_Startます。でこれを行う慣例ですが、 of でFormatterConfigこれを行うこともできます。ここにあります:Application_StartGlobal.asax.csFormatterConfig

public static class FormatterConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Formatters.JsonFormatter.SerializerSettings.Converters
            .Add(new TrimmingConverter());

    }
}
于 2015-12-15T22:29:46.257 に答える