2013-05-30 27 views
4

什麼是修剪傳遞給MVC web api的模型的所有屬性(使用複雜對象的post方法)的最佳方法。一件簡單的事情就是在所有屬性的getter中調用Trim函數。但是,我真的不喜歡那樣。如何在ASP.NET MVC Web API中修剪模型的空間

我想簡單的方法是這樣的MVC這裏提到的ASP.NET MVC: Best way to trim strings after data entry. Should I create a custom model binder?

+0

恕我直言,這是肯定的。 – Saravanan

回答

7

要修剪的網絡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中這樣做,但您也可以在Global.asax.csApplication_Start中執行此操作。這是它在FormatterConfig

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

    } 
}