2014-11-08 69 views

回答

3

你可以使用反射全局請求過濾器內,例如:

GlobalRequestFilters.Add((req, res, dto) => dto.SanitizeStrings()); 

哪裏SanitizeStrings僅僅是一個自定義的擴展方法:

public static class ValidationUtils 
{ 
    public static void SanitizeStrings<T>(this T dto) 
    { 
     var pis = dto.GetType().GetProperties();  
     foreach (var pi in pis) 
     { 
      if (pi.PropertyType != typeof(string)) continue; 

      var mi = pi.GetGetMethod(); 
      var strValue = (string)mi.Invoke(dto, new object[0]); 
      if (strValue == null) continue; 
      var trimValue = strValue.Trim(); 

      if (strValue.Length > 0 && strValue == trimValue) continue; 

      strValue = trimValue.Length == 0 ? null : trimValue; 
      pi.GetSetMethod().Invoke(dto, new object[] { strValue }); 
     } 
    } 
} 
相關問題