修剪传递给MVC web api的模型的所有属性的最佳方法是什么(具有复杂对象的post方法)。可以做的一件事是在所有属性的 getter 中调用 Trim 函数。但是,我真的不喜欢那样。
我想要一种简单的方式,就像这里为 MVC 提到的那样 ASP.NET MVC: Best way to trim strings after data entry. Should I create a custom model binder?
最佳答案
要修剪 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_Start
中执行此操作的 Global.asax.cs
.这是在 FormatterConfig
:public static class FormatterConfig
{
public static void Register(HttpConfiguration config)
{
config.Formatters.JsonFormatter.SerializerSettings.Converters
.Add(new TrimmingConverter());
}
}
关于asp.net-mvc - 如何在 ASP.NET MVC Web API 中修剪模型的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16834600/