Asp.net MVC 对用户输入的字符串做Trim处理的方法实例

Asp.net MVC 对用户输入的字符串做Trim处理的方法实例,第1张

概述Asp.net MVC 对用户输入字符串做Trim处理的方法实例 这篇文章主要介绍了Asp.net MVC 如何对所有用户输入的字符串字段做Trim处理,需要的朋友可以参考下

经常需要对用户输入的数据在插入数据库或者判断之前做Trim处理,针对每个viewmodel的字段各自做处理是我们一般的想法。最近调查发现其实也可以一次性实现的。

MVC4.6中实现方式

1,实现IModelBinder接口,创建自定义ModelBinder。

public class TrimModelBinder : IModelBinder  {    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)    {      var valueResult = bindingContext.ValueProvIDer.GetValue(bindingContext.Modelname);      string attemptedValue = valueResult?.AttemptedValue;      return string.IsNullOrWhiteSpace(attemptedValue) ? attemptedValue : attemptedValue.Trim();    }  }

2,添加ModelBinder到MVC的绑定库。


protected voID Application_Start()    {      //System.Web.Mvc.ModelBinders.Binders.DefaultBinder = new ModelBinders.TrimModelBinder();      System.Web.Mvc.ModelBinders.Binders.Add(typeof(string), new ModelBinders.TrimModelBinder());      AreaRegistration.RegisterallAreas();      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);      RouteConfig.RegisterRoutes(Routetable.Routes);      BundleConfig.RegisterBundles(Bundletable.Bundles);    }

3,确认一下效果

将密码后面的空格做Trim处理,绑定到viewmodel的时候变成1了:

Asp.net core 1.1 MVC中实现方式

1,自定义ModelBinder并继承ComplexTypeModelBinder


public class TrimModelBinder : ComplexTypeModelBinder  {    public TrimModelBinder(IDictionary propertyBinders) : base(propertyBinders) { }     protected overrIDe voID SetProperty(ModelBindingContext bindingContext, string modelname, ModelMetadata propertyMetadata, ModelBindingResult result)    {      var value = result.Model as string;       result= string.IsNullOrWhiteSpace(value) ? result : ModelBindingResult.Success(value.Trim());       base.SetProperty(bindingContext, modelname, propertyMetadata, result);    }  }

2,为ModelBinder添加自定义ProvIDer


public class TrimModelBinderProvIDer : IModelBinderProvIDer  {    public IModelBinder GetBinder(ModelBinderProvIDerContext context)    {      if (context.Metadata.IsComplexType && !context.Metadata.IsCollectionType)      {        var propertyBinders = new Dictionary();        for (int i = 0; i < context.Metadata.PropertIEs.Count; i++)        {          var property = context.Metadata.PropertIEs[i];          propertyBinders.Add(property, context.CreateBinder(property));        }        return new TrimModelBinder(propertyBinders);      }      return null;    }  }

3,将ProvIDer添加到绑定管理库


services.AddMvc().AddMvcoptions(s =>      {        s.ModelBinderProvIDers[s.ModelBinderProvIDers.TakeWhile(p => !(p is ComplexTypeModelBinderProvIDer)).Count()] = new TrimModelBinderProvIDer();      });

4,确认一下效果

将密码后面的空格做Trim处理,绑定到viewmodel的时候变成1了:

总结

以上是内存溢出为你收集整理的Asp.net MVC 对用户输入的字符串做Trim处理的方法实例全部内容,希望文章能够帮你解决Asp.net MVC 对用户输入的字符串做Trim处理的方法实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1212218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存