rus*_*der 1 asp.net model-binding asp.net-web-api
当前方法是后期操作,构造命令并将其放在总线上.我不喜欢的部分是ModelHelper.Trim,见下文.
[ValidationActionFilter]
public void Post([FromBody]CompanyFormModel company)
{
var newCompany = new NewCompany
{
Id = id,
Name = ModelHelper.Trim(company.Name),
Description = ModelHelper.Trim(company.Description),
Sector = ModelHelper.Trim(company.Sector),
};
_bus.Send(newCompany);
}
Run Code Online (Sandbox Code Playgroud)
该ModelHelper.Trim正在检查该字段为字符串,如果不为空做装饰.有任何方法可以将其作为所有帖子和看跌期权的重要关注点.
试图在Formatters.JsonFormatter.SerializerSettings.Converters中注册一个TrimmingConverter ......但似乎不起作用.
知道如何以非侵入方式解决这个问题吗?
也许你正在使用DataContractJsonSerializer而不是JSON.net?
如果存在(或将其设置为false),请删除此行:
config.Formatters.JsonFormatter.UseDataContractJsonSerializer = true;
Run Code Online (Sandbox Code Playgroud)
将转换器添加到JsonFormatter确实有效.这是我的:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new TrimmingConverter());
...
Run Code Online (Sandbox Code Playgroud)
修剪转换器
public class TrimmingConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
{
var text = (string)reader.Value;
return text != null ? text.Trim() : null;
}
public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
{
writer.WriteValue(value);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |