Asp.net-Mvc

如何在 ASP.NET MVC Web API 中修剪模型的空間

  • October 10, 2018

修剪傳遞給 MVC Web api 的模型的所有屬性的最佳方法是什麼(具有復雜對象的 post 方法)。可以簡單做的一件事是在所有屬性的 getter 中呼叫 Trim 函式。但是,我真的不喜歡那樣。

我想要一種簡單的方法,類似於此處為 MVC 提到的ASP.NET MVC:在數據輸入後修剪字元串的最佳方法。我應該創建自定義模型綁定器嗎?

要在 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。在 中執行此操作的約定FormatterConfig,但您也可以在Application_Startof 中執行此操作Global.asax.cs。這是在FormatterConfig

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

   }
}

引用自:https://stackoverflow.com/questions/16834600