首页后端开发ASP.NETAsp.net MVC 对输入的字符串字段做Trim处理的方法

Asp.net MVC 对输入的字符串字段做Trim处理的方法

时间2024-01-30 07:50:02发布访客分类ASP.NET浏览145
导读:收集整理的这篇文章主要介绍了Asp.net MVC 对输入的字符串字段做Trim处理的方法_实用技巧,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了Asp.net MVC 如何对所有用户输入的字符串字段做Trim处理,需...
收集整理的这篇文章主要介绍了Asp.net MVC 对输入的字符串字段做Trim处理的方法_实用技巧,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了Asp.net MVC 如何对所有用户输入的字符串字段做Trim处理,需要的朋友可以参考下

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

MVC4.6中实现方式

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


@H_512_16@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处理的方法_实用技巧的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

Trim

若转载请注明出处: Asp.net MVC 对输入的字符串字段做Trim处理的方法
本文地址: https://pptw.com/jishu/592242.html
javascript数据类型转换包括什么 深入了解Node.js中的异步编程,分享四种解决方案

游客 回复需填写必要信息