【发布时间】:2017-11-02 16:07:19
【问题描述】:
有人可以阐明如何为复杂类型实现模型绑定器吗? 我希望修剪所有字符串属性。我尝试了以下但 永远不会调用“SetProperty”方法。
public class TrimmingModelBinder : ComplexTypeModelBinder
{
public TrimmingModelBinder(IDictionary propertyBinders) : base(propertyBinders)
{
}
protected override void SetProperty(ModelBindingContext bindingContext, string modelName, ModelMetadata propertyMetadata, ModelBindingResult result)
{
if(result.Model is string)
{
string resultStr = (result.Model as string).Trim();
result = ModelBindingResult.Success(resultStr);
}
base.SetProperty(bindingContext, modelName, propertyMetadata, result);
}
}
public class TrimmingModelBinderProvider : IModelBinderProvider
{
public IModelBinder GetBinder(ModelBinderProviderContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (context.Metadata.IsComplexType && !context.Metadata.IsCollectionType)
{
var propertyBinders = context.Metadata.Properties.ToDictionary(p => p, context.CreateBinder);
return new TrimmingModelBinder(propertyBinders);
}
return null;
}
}
【问题讨论】:
-
在这里找到解决方案:stackoverflow.com/questions/45495432/…
标签: c# asp.net asp.net-web-api