在Asp.Net MVC中,System.Web.Mvc.IModelBinder允许以下实现更改所有字符串:
public class CustomMvcTextBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ValueProviderResult result = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (result == null)
return null;
var value = result.AttemptedValue.Trim().ToUpper();
return value;
}
}
然后我将其添加到ModelBinders:
ModelBinders.Binders.Add(typeof(string), new CustomMvcTextBinder());
然而,Asp.Net WebApi实现System.Web.Http.ModelBinding.IModelBinder有一个不同的实现,返回一个bool而不是对象。
如何更改IModelBinder的WebApi版本中的字符串值?
public class CustomWebApiTextBinder : IModelBinder
{
public bool BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ValueProviderResult result = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (result == null)
return false;
var value = result.AttemptedValue.Trim().ToUpper();
return true;
}
}
答案 0 :(得分:3)
您需要设置bindingContext.Model
并返回true
:
var value = result.AttemptedValue.Trim().ToUpper();
bindingContext.Model = value;
return true;
假设你的模型只是一个字符串,当然。否则可能需要更多的对象创建/转换。