asp.net-mvc - 如何在 ASP.NET MVC Web API 中修剪模型的空间

标签 asp.net-mvc model-binding trim

修剪传递给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/

相关文章:

c# - asp.net-mvc(2) 中 Modelbinding double 的 CultureInfo 问题

asp.net-mvc-3 - 将字符串数组绑定(bind)到 MVC Razor 中的 DropDownList

sql-server - SQL Server : RTRIM not working to remove empty spaces

java - 删除 ArrayList 中的所有空格。 java

asp.net-mvc - ASP.Net MVC4 将 "create view"绑定(bind)到包含 List 的模型

asp.net-mvc - 单声道 2.2 上的 ASP.NET mvc

c# - 我使用的是什么架构模式/设计?

c# - 如何在 asp.net vnext 中注册身份验证类型名称

asp.net-mvc - MVC View 渲染不尊重 View 模型中传递的数据

string - 如何根据正在进行的特定标准修剪字符串 openge 4gl?