如何在点网核心中删除输入模型中的多余空间?

时间:2018-07-28 08:04:29

标签: c# asp.net-core asp.net-core-2.0 asp.net-core-webapi

我找到了一个链接,用于删除模型属性中字符串类型为How to trim spaces of model in ASP.NET MVC Web API

的多余空格。

如何在dot net core 2.1 Web API中实现相同的功能?

或者在dotnet核心中有可用的格式化程序来消除输入和输出模型中的多余空间?

预先感谢?

1 个答案:

答案 0 :(得分:2)

我相信您链接的答案可能是您的最佳选择。 因此,请根据anwser创建一个转换器。

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());
  }
}

然后像下面这样在ConfigureServices类的Startup方法中注册它:

public void ConfigureServices(IServiceCollection services)
{
  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
    .AddJsonOptions(a => a.SerializerSettings.Converters.Add(new TrimmingConverter()));
}