当前位置:首页 > 日记 > 正文

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处理的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

相关文章

详谈for循环里面的break和continue

详谈for循环里面的break和continue

语句,循环,电脑软件,continue,break,break语句哇,我已经找到我要的答案了,我不需要进行更多的循环了!比如,寻找第一个能被5整除的数:for循环中,如果遇见了break语句,这个for循环就会立即终止,不在进行其他的迭代了。for(var i = 1 ; i <= 100; i++)…

PHP中Trait及其应用详解

PHP中Trait及其应用详解

详解,及其应用,电脑软件,PHP,Trait,从PHP的5.4.0版本开始,PHP提供了一种全新的代码复用的概念,那就是Trait。Trait其字面意思是”特性”、”特点”,我们可以理解为,使用Trait关键字,可以为PHP中的类添加新的特性。 熟悉面向对象的都知道,软…

PS怎么设计一款漂亮的教师节艺术字

PS怎么设计一款漂亮的教师节艺术字

教师节,漂亮,艺术字,电脑软件,PS,Photoshop是我们日常工作学习中,经常用到的一款图像处理软件,今天给大家分享一下,怎么用PS制作漂亮的艺术字效果。主要用到图片背景素材和透明的艺术字,还有一些发光星星作为点缀效果。软件名称:Adobe Photoshop…

excel2013计算百分比的方法excel20

excel2013计算百分比的方法excel20

计算,方法,百分比,电脑软件,strong,  在Excel中经常需要计算数据的值得百分比。而因为2013的界面有比较大的改动,很多朋友都不知道该如何入手。下面是小编整理的excel2013计算百分比的方法以供大家阅读。excel2013计算百分比的方法步骤1:假…

jQuery 添加样式属性的优先级别方

jQuery 添加样式属性的优先级别方

方法,样式属性,级别,推荐,电脑软件,jQuery类中添加多个属性$('#five .a').css({ color:'blue', border:'2px solid green', background:'blue'});jQuer为元素添加类$('#five .a').addClass('funny');HTML code<style>.funny…

AI图形怎么做布尔运算? ai布尔运算

AI图形怎么做布尔运算? ai布尔运算

布尔运算,图形,教程,怎么做,电脑软件,ai里的布尔运算怎么做?今天我们就来看看详细的教程,是基础教程,请继续关注。软件名称:Adobe Illustrator CS6 (AI cs6) 精简绿色中文版(32位+64位)软件大小:205MB更新时间:2014-05-111、打开ai,新建文件,选择&l…

怎么使用excel2013做数据透视表Exc

怎么使用excel2013做数据透视表Exc

数据,方法,步骤,透视,透视图,  Excel最新版更新到2013,相比2003、2007和2010,2013的excel界面方面有一定变化,在操作方面也有一定的便捷性。那么如何使用excel2013做一些简单的数据汇总、透视,以及在数据透视表中进行计算、展现等呢?那么下…

PS怎么绘制大头儿子的头像?

PS怎么绘制大头儿子的头像?

绘制,头像,大头,儿子,电脑软件,PS怎么绘制大头儿子的头像? 大头儿子是一个非常可爱的都画人物,该怎么绘制出来坑呢?下面我们就来看看详细的教程。软件名称:Adobe photoshop 7.01 官方正式简体中文版软件大小:154MB更新时间:2013-04-191、先用钢…

photoshop 水晶风格按钮

photoshop 水晶风格按钮

按钮,水晶,风格,电脑软件,photoshop,最终效果图 12 3 4 5 阅读全文 1 23 4 5 阅读全文 1 2 34 5 阅读全文 1 2 3 45 阅读全文 最终效果图 1 2 3 4 5阅读全文…

怎么在PowerPoint演示文稿中插入公

怎么在PowerPoint演示文稿中插入公

公式,演示文稿,电脑软件,PowerPoint,PPT,  公式编辑器用来输入统计函数、数学函数、微积分方程式等复杂方程式。通过单击&ldquo;插入&rdquo;菜单,选取&ldquo;对象&rdquo;命令,弹出&ldquo;插入对象&rdquo;对话框等步骤可以插入想要的公式。…

excel2010表格标题行的设置方法

excel2010表格标题行的设置方法

设置,表头,步骤,方法,教程,  在我们使用excel制作表格的时候,一般情况下,都会选择第一行作为标题行,如何设置标题行呢。下面让小编为你带来excel2010表格设置标题行的方法,希望对你有帮助!excel2010标题行的设置步骤1.打开新工作表,键入我们想…

如何使用JS在HTML中自定义字符串格

如何使用JS在HTML中自定义字符串格

字符串格式化,自定义,如何使用,电脑软件,HTML,Python中支持字符串格式化,其基本形式如下:str = "I'm %s, %s years old." % ('jack', 19) print(str) #结果: I'm jack, 19 years old. 在JavaScript中虽没有类似的方法,但我们可以利用字…